|
在這篇文章里,我將介紹怎樣編寫你的代碼來提高緩存計(jì)劃的重用。了解當(dāng)有緩存計(jì)劃或重用一個(gè)已有的計(jì)劃時(shí)空格和注釋會(huì)產(chǎn)生怎樣的影響,這會(huì)幫助你降低你的應(yīng)用程序緩存的計(jì)劃數(shù)目。
探究緩存計(jì)劃
你在利用計(jì)劃緩存嗎?你是否很好地利用緩存計(jì)劃?你的應(yīng)用程序曾經(jīng)使用它們了嗎,它們是否被多次利用?你有沒有在同一時(shí)間在存儲(chǔ)過程緩存中對(duì)同一查詢具有多個(gè)緩存計(jì)劃?這些緩存計(jì)劃使用了多少空間?這些是你需要回答的問題,以確保你在優(yōu)化過程緩存以及減少你的應(yīng)用程序?qū)?chuàng)建的緩存計(jì)劃數(shù)目。你編寫你的T-SQL代碼時(shí)有些細(xì)微的地方需要注意,它會(huì)使得SQL Server為相同的T-SQL代碼去執(zhí)行額外的工作來編譯和緩存執(zhí)行計(jì)劃。
在SQL Server可以處理一個(gè)T-SQL批處理之前,它需要?jiǎng)?chuàng)建一個(gè)執(zhí)行計(jì)劃。為了使SQL Server創(chuàng)建一個(gè)執(zhí)行計(jì)劃,它必須首先消耗一些寶貴的資源,比如CPU來編譯一個(gè)T-SQL批處理。當(dāng)一個(gè)計(jì)劃編譯后,它被緩存起來,因此在你的應(yīng)用程序不止一次地調(diào)用相同的T-SQL語句時(shí)它可以被重用。如果你編寫你的T-SQL代碼來提高經(jīng)常執(zhí)行的T-SQL語句的緩存計(jì)劃的重用,那么你就能夠改進(jìn)你的代碼性能。
隨著SQL Server 2005的推出,微軟提供了一些你可以用來探究緩存計(jì)劃的DMV。通過使用這些DMV,你可以確認(rèn)一些關(guān)于緩存計(jì)劃的事情,下面是你可以確認(rèn)的事情的簡(jiǎn)短列表:
• 與一個(gè)緩存計(jì)劃相關(guān)的文本
• 一個(gè)緩存計(jì)劃執(zhí)行的次數(shù)
• 緩存計(jì)劃的規(guī)模
在后面我將告訴你怎樣使用DM來探究緩存計(jì)劃信息。
由于注釋或多余空格而使得有多個(gè)計(jì)劃
我相信你們所有人都有將代碼放到存儲(chǔ)過程中的想法。我們?yōu)榱舜a在一個(gè)應(yīng)用程序中或多個(gè)應(yīng)用程序間重用而這么做。但是,不是SQL Server執(zhí)行的所有代碼都包含在存儲(chǔ)過程中。一些應(yīng)用程序可能以順序T-SQL代碼來編寫的。如果你在編寫順序T-SQL代碼,那么你需要了解注釋你的代碼以及放置空格的方式可能會(huì)導(dǎo)致SQL Server為相同的T-SQL語句創(chuàng)建多個(gè)緩存計(jì)劃。
下面是一個(gè)T-SQL腳本的示例,它包含兩個(gè)不同的T-SQL語句:
1. SELECT * FROM AdventureWorks.Production.Product
2. GO
3. SELECT * FROM AdventureWorks.Production.Product -- return records
4. GO
it知識(shí)庫(kù):利用T-SQL代碼提高緩存效率 減少內(nèi)存消耗,轉(zhuǎn)載需保留來源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。