今天我想進(jìn)一步談下SQL Server里的計(jì)劃緩存和它的副作用。我們都知道,每個(gè)提交到SQL Server的邏輯查詢,會(huì)編譯為物理執(zhí)行計(jì)劃。這個(gè)執(zhí)行計(jì)劃然后會(huì)緩存為所謂的計(jì)劃緩存,用于后期重用?,F(xiàn)在我們首先來(lái)談下即席SQL語(yǔ)句和它的負(fù)作用,還有它們帶來(lái)的性能問(wèn)題。

即席SQL語(yǔ)句(Adhoc SQL Statements)

每次當(dāng)你提交一個(gè)即席SQL語(yǔ)句到SQL Server,對(duì)于每個(gè)特定查詢,都會(huì)生成一個(gè)執(zhí)行計(jì)劃?!疤囟ú樵儭笔鞘裁匆馑??答案很簡(jiǎn)單:SQL Server對(duì)每個(gè)完整的SQL語(yǔ)句(包括你的參數(shù)值)生成一個(gè)哈希值,并使用這個(gè)哈希值作為計(jì)劃緩存的查找值。如果使用這個(gè)哈希值找到一個(gè)執(zhí)行計(jì)劃,計(jì)劃就會(huì)重用,否則在計(jì)劃緩存里會(huì)編譯一個(gè)新的執(zhí)行計(jì)劃。假設(shè)你提交下列3個(gè)查詢到SQL Server:

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計(jì)算培訓(xùn),高端軟件開(kāi)發(fā)培訓(xùn),項(xiàng)目經(jīng)理培訓(xùn)

SELECT * FROM Sales.SalesOrderHeaderWHERE CustomerID = 11000GOSELECT * FROM Sales.SalesOrderHeaderWHERE CustomerID = 30052GOSELECT * FROM Sales.SalesOrderHeaderWHERE CustomerID = 11223GO

大數(shù)據(jù)培訓(xùn),云培訓(xùn),數(shù)據(jù)挖掘培訓(xùn),云計(jì)算培訓(xùn),高端軟件開(kāi)發(fā)培訓(xùn),項(xiàng)目經(jīng)理培訓(xùn)

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動(dòng)軟件開(kāi)發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式