本文将使用可靠性和性能螢幕來擷取記憶體相關的統計。
在開始之前,先來了解一下将要用到的計數器:
Ø Memory: Available Mbytes:提供系統上可用記憶體的數量。
Ø Memory: Pages/sec:顯示有多少頁被用于讀或寫入硬碟,這些基于硬頁面錯誤。
Ø Paging File:%Usage:顯示挂起的總數的百分比。
Ø SQL Server: Buffer Manager: Buffer cache hit ratio:傳回SQLServer從緩存但不是從硬碟傳回的資料的百分比。
Ø SQL Server: Buffer Manager: Page life expectancy:顯示資料駐留在記憶體的平均秒數
Ø SQL Server: Buffer Manager: Memory Grants Pending:等待記憶體工作區授予的程序數。
1、
打開可靠性和性能螢幕,在【運作】中輸入perfmon.exe
2、
選擇性能螢幕。
3、
去除所有已存在的計數器。
4、
添加新計數器。
5、
選擇所要監視的伺服器。
6、
選擇下面的計數器:
Memory: Available Mbytes
Memory: Pages/sec
Paging File:%Usage
SQL Server: Buffer Manager: Buffer cache hit
SQL Server: Buffer Manager: Page life expectancy
SQL Server: Memory Manager: Memory Grants Pending
7、
然後點選确定。
上面這些步驟已經在前一章說明了。這裡就不累贅了。
在本文中,再次使用了可靠性和性能螢幕這個工具。為了擷取記憶體相關的性能計數器,需要在圖形化界面中觀察這些計數器。
首先先檢查Memory: Available Mbytes,這個值意味着系統的可用記憶體。如果發現這個值經常很低,可能表示伺服器記憶體不足,在生産資料庫中,這個值可以使用GB為機關。
然後檢查Memory: Pages/sec ,以為這因為硬頁面錯誤導緻的從磁盤讀或寫頁面。這個值如果長期高于20,意味着記憶體不足使得應用程式使用虛拟記憶體,進而導緻挂起。
接着是Memory: pages/sec ,同時也要檢查Paging File:%Usage去預估記憶體挂起。如果這個值經常超過20%,可能意味着記憶體不足。
SQL Server: Buffer Manager: Buffer cache hit ratio:意味着資料從緩存中讀取的次數,比較合理的值為大于90%。如果該值很低,可能記憶體不足或者需要檢查索引和查詢。如果你需要獲得大量資料,這一步可能就會占用大量記憶體然後引起SQLServer從磁盤讀資料而不是從記憶體。檢查索引,確定在大表中能盡可能筆描掃描。并盡可能限制查詢傳回的結果行。
檢查SQL Server: Buffer Manager: Page life expectancy,表示資料頁駐留在記憶體的秒數。微軟建議最少300秒。如果在一個執行個體中經常低于300秒,意味着資料保留的時間少于5分鐘就被移出記憶體。
如果SQL Server: Memory Manager: Memory Grants Pending經常建議等待程序,你可能需要增加伺服器的記憶體了。
不管什麼原因,如果你發現記憶體不足和挂起發生得比較頻繁,你首先應該檢查是否有非SQL Server的其他應用或者服務耗費了比SQL Server更加多的記憶體。如果你發現這些應用或者服務,嘗試移到别的伺服器。如果做不到,那麼需要增加更多的記憶體,以供SQLServer使用。
如果伺服器僅僅工SQL Server使用且沒有上面說的情況,那麼要分析你的查詢和索引,以確定他們是最優化的。如果已經優化好,還是存在這些問題,那麼才需要考慮增加記憶體。
除了可靠性和性能螢幕,還可以使用SQL Server Profiler來監控性能,建立一個使用者自定義收集器并存為檔案,當你從性能螢幕中擷取性能資料時,SQL Server Profiler會同步運作。一旦你完成收集,可以把性能資料導入到SQLServer Profiler中供任何時候分析。