Customize Memory Allocation for Queries in SQL Server 2008(自訂SQL Server 2008 查詢記憶體大小)

SQL Server 2008 預設會為執行查詢分配最小記憶體為 1024 KB.這樣可以保證每位使用者都可以取得該記憶體分配,而且可以設定介於 512 KB 到 2 GB之間.如果你增加查詢的最小記憶體大小,這可以改善執行密集處理操作的查詢效能,如排序或雜湊.但如果該數值你設定太高,就可能會降低系統效能.因為這樣,只有當你遇到執行查詢問題時,你才考慮去調整最小記憶體大小.

記憶體預設設定為 1024 KB,這幾乎可以符合大多數的情況.如果伺服器運行在一個很繁忙的環境中且伴隨每一位使用者連線都同時執行很多查詢,或是在一個相對緩慢的環境,但有少數大型或複雜的查詢,這樣你才可能會考慮去改變它.在這情況下,有四種因素可以決定你調整查詢的最小記憶體大小:

●可用的記憶體總量(當系統閒置且SQL Server 執行中)

●每一位獨立使用者連線平均同時執行查詢的數量

●平均查詢大小

●你希望達到的查詢回應時間

當你設定該值通常是一個妥協後的數值,你不能即時得到回應,但你可以依據現有可用資源來優化效能.使用下面公式來得到優化數值的起始點:

FreeMemory / (AvgQuerySize * AvgNumSimulQueries)

例如 ,假設系統的可用記憶體有 2200 MB,平均每個查詢大小為 2MB,且同時執行查詢數量平均為50 ,那麼查詢的最小記憶體大小為 2200 MB/(2*50), 或 22 MB.一般來說,這個值代表是最大的,如果可以的話,你應該依現有環境給予比較低的數值.

要分配每個查詢記憶體,請遵循以下步驟:

1.伺服器屬性視窗中,選擇記憶體葉面並且設定每個查詢的最小記憶體(以KB為單位)

2.點選確定.

你也可以使用系統預存程序 sp_configrure 設定查詢的最小記憶體,命令如下:

exec sp_configure "min memory per query", <number of kilobytes>

來源出處: Microsoft Press book Microsoft SQL Server 2008 Administrator’s Pocket Consultant