參數(shù)化和即席查詢,都是一個二難的選擇。
一旦選擇參數(shù)化 就有可能帶來 一種情況就是 執(zhí)行計劃反復被利用。
不會通過收集現(xiàn)有的統(tǒng)計信息,出一個比較優(yōu)異的執(zhí)行計劃。
即席查詢也就是 ad hoc query,每次都需要重編譯,花費比較大。
這個是一個2難,需要平衡。對于這個問題 sql server 有 簡單參數(shù)化,強制參數(shù)化和2008 才有的optimize for ad hoc workloads。
optimize for ad hoc workloads 的原理大概如此:
當你第一次執(zhí)行 ad hoc 查詢的時候,被編譯出來的執(zhí)行計劃,sql server 存?zhèn)€一部分。
為什么不全存呢,如果全存,adhoc 查詢很頻繁,那么不就給 內(nèi)存帶來壓力了。?
當你第二次查詢的時候,就保存這個執(zhí)行計劃。
當你第三次運行的時候,就可以直接從cache 內(nèi)讀取出來執(zhí)行計劃。
EXEC sp_configure ' show advanced options ' , 1
RECONFIGURE
EXEC sp_configure ' optimize for ad hoc workloads ' , 1
RECONFIGURE
對sql server 運行還是又好處的,沒事兒就開著吧
SQL Server 2008 性能調(diào)優(yōu) optimize for ad hoc workloads
更多文章、技術交流、商務合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
