天天看點

SQL Server 2008 性能調優 optimize for ad hoc workloads

參數化和即席查詢,都是一個二難的選擇。

一旦選擇參數化 就有可能帶來 一種情況就是 執行計劃反複被利用。

不會通過收集現有的統計資訊,出一個比較優異的執行計劃。

即席查詢也就是 ad hoc query,每次都需要重編譯,花費比較大。

這個是一個2難,需要平衡。對于這個問題 sql server 有 簡單參數化,強制參數化和2008 才有的optimize for ad hoc workloads。

optimize for ad hoc workloads 的原理大概如此:

當你第一次執行 ad hoc 查詢的時候,被編譯出來的執行計劃,sql server 存個一部分。

為什麼不全存呢,如果全存,adhoc 查詢很頻繁,那麼不就給 記憶體帶來壓力了。 

當你第二次查詢的時候,就儲存這個執行計劃。

當你第三次運作的時候,就可以直接從cache 内讀取出來執行計劃。

對sql server 運作還是又好處的,沒事兒就開着吧