標籤:can 記憶體配置 一點 seconds ota form 鎖定 殺毒軟體 art
3 .6 .4 最佳化SQL Server記憶體酉己置
1 .最小和最大伺服器記憶體
這兩個配置用於控制SQL Server可用記憶體的大小。對於最小記憶體,在 SQL Server服務 啟動時,不會馬上達到這個設定值,而是僅使用最小的需求記憶體,然後按需增長,一旦增
長到最小記憶體設定值時,SQL Server將不會再釋放記憶體。最大記憶體用於設定記憶體使用量的上 限,可以使用SSMS或者sp_COnfigU re來配置。需要提醒的是,這裡的“最大記憶體”實際
上指的是Buffer Pool,在 64位系統中,如果沒有控制好記憶體而導致閒置實體記憶體不足,
會引起Windows削減SQL Server的工作集。
如何計算合適的最大記憶體?可以參考以下資訊。
(1 ) 監控SQL Server的最大記憶體使用量情況 可以通過效能監控器的 MSSQL$<instance>:Memory Manager\Total Server Memory (K.B) 計數器來監控SQL Server總的Buffer Pool使用方式。如果SQL Server所需的實體記憶體超
過了現有的可用數量,這個值就會降低,而在釋放記憶體後,這個值則會升高。可以在一開
始把這個值設定得低一點,然後通過監控來適當地進行調整。
(2 ) SQL Server潛在的最大記憶體使用量
在考慮潛在使用時,很重要的一點是對串連伺服器和外部預存程序的調用,在後期開
發中,這部分內容可能會非計劃地加入。一般來說,每個線程會使用0.5MB (32位)或者
2MB (64位)的記憶體,還要保證大概有512MB可以用於這部分的使用。
另外,一些大型企業可能會使用第三方備份軟體、殺毒軟體等,這些也會影響SQL
Server的記憶體使用量。最好預留1? 3GB的記憶體給這些軟體使用。
2 .檢查最大記憶體配置是否合理
在搭建新伺服器時,該怎麼去決定配置的最大伺服器記憶體是多少呢?最直接的答案是:
從低開始設定,然後進行周期性監控(開始時監控周期要比較短,以便儘快發現問題),並
按需調整。或者使用效能計數器來監控,比如通過MSSQL$<instance>:Buffer Manager\Page Life Expectancy (PLE)和 Memory\Available Mbytes 來監控。
PLE計數器用於表示SQL Server的資料緩衝在記憶體中的時間,在理想情況下該時間越 長越好,這是記憶體壓力指標之一。如果小於300s,就要檢查指標Available Mbytes 了。 Available Mbytes表示Windows上當前有多少實體記憶體沒有被使用。國外專家建議的 標準是最少保留100MB。當然不要把最低標準當作最低配置,應儘可能保證有GB層級的
可用記憶體。
如果PLE很低,但是可用記憶體數很高,那麼應該調高最大伺服器記憶體,因為這樣可以
增加PLE的時間。相反,如果可用記憶體很低,但是PLE很高,那就需要降低最大記憶體配置
來釋放記憶體給Windows。下面是部分配置樣本。 □最大伺服器記憶體30GB,伺服器有32GRAM,PLE平均值為10000,可用記憶體為
90M B,那麼最少降低500MB最大伺服器記憶體。
□最大伺服器記憶體46G B ,伺服器有50G RAM, PLE平 均 值 為 1 0 .可用記憶體為
1500MB,那麼應提高最大伺服器記憶體500? 1000MB。
□最大伺服器記憶體60G B ,伺服器有60GRAM, PLE平均值為5 0 ,可用記憶體為20M,
那麼應降低100MB最大記憶體,或者增加更多的RAM (最直接的方法)。
3 . 鎖定記憶體頁
鎖定記憶體頁(Lock Pages in Memory, LPIM )是在 Windows 和 SQL Server 之間發生問
題時的應急處理方案,在舊版本(比如Windows Server 2003及以前版本)中,效果不佳。 如果在作業系統上沒有充足的實體記憶體可用於支援其他請求,會強制回收某些應用的內
存。這對SQL Server的記憶體配置是毀滅性打擊。可能會在SQL Server的錯誤記錄檔中看到 類似的話。
A significant part of sql server process memory has been paged out. This may result in a performance degradation. Duration: 0 seconds. Working set (KB): 1086400, committed (KB): 2160928, memory utilization: 50%.
從 Windows Server 2008開始,這個現象有了明顯的改進,但是還會出現。對於這類情 況,可以把最大伺服器記憶體調整到適當的大小,保證Windows有足夠的記憶體來運行其他應 用。另外也可以使用SQL Server來鎖定記憶體頁。 如果啟用了 LPIM, SQL Server的 Buffer Pool頁 會 被 “鎖定”,並且不允許作業系統 強行收回=在頁被鎖定之後,這部分空間將不會算人可用記憶體中。但是只有SQL Server的 Buffer Pool分配的頁才可以被鎖定,作業系統依舊可以收回其他記憶體,包括SQL Server依 賴的進程記憶體。
3 .6 .4 最佳化SQL Server記憶體酉己置