十大監視SQL Server性能的計數器

原文鏈接:http://www.cnblogs.com/flysun0311/archive/2012/02/29/2373390.html
作者:Alex Tian

作爲DBA,每個人都會用一系列計數器來監視SQLSERVER的運行環境,使用計數器,既可以衡量當前的數據庫的性能,還可以和以前的性能進行對比。我們也可以一直以快速和簡單的方法把計數器做了一張圖表來識別數據庫的性能的變化情況,來分析數據庫性能的趨勢。

  下面是我常用的前10位的SQL Server計數器,嚴格的來說,它們沒有特定的順序。對於每一個計數器,我將儘可能所描述的是什麼,在某些情況下,我也會說說這些計數器的理想值。這樣可以參考用於衡量自己的數據庫的指標情況。

  1. SQLServer: Buffer Manager: Buffer cache hit ratio (SqlServer緩衝管理器:緩衝區高速緩存命中率 )

  高速緩存命中率計數器,表示SQL Server接受命令查詢所需的數據頁恰好在高速緩存中的概率,如果在高速緩存中查找不到,則數據頁要重新到磁盤或者其它地方獲取。這個數值越高,表示SQL Server能夠從緩存中獲得的數據概率越高,而不是再從磁盤讀取。這個數值理論上是越高越好,接近到100.有了這100,100%的時間在SQL Server的內存中找到了需要的數據頁,那麼性能一直很高。如是是一個很低的數值可能表明內存方面有問題,最有可能是內存不足。

  2. SQLServer: Buffer Manager: Page life expectancy (SqlServer緩衝管理器:頁壽命)

  頁壽命表示頁在緩存中存放的時間。頁面停留的時間越長在內存中,那麼下一次查詢時,如果所需的頁面還在緩存中,SQL Server將不再需要從磁盤讀取。頁壽命根據不同的服務器的基值不同,和內存大小有一定的關係,我們應該觀察這個計數器,以確定數據庫環境中正常基線是什麼。有人統計了一下,低於300(或5分鐘),說明我們的服務器內存不足。

  3. SQLServer: SQL Statistics: Batch Requests/Sec (SqlServer統計:批請求/秒)

  批請求/秒是指SQL Server是每秒接收批處理的數量。這個計數器是可以查看我們的服務器處理速度。數字越大,表明我們的數據庫處理查詢的吞吐量越大。像許多計數器一樣,沒有一個單一的數字,可以說明服務器是太忙了。如今的服務器越來越強大,因此可以一刻不停的處理更多批次的請求。隨着時間的推移,應該收集這個計數器,以確定我們的服務器環境基準數值是什麼。

  4. SQLServer: SQL Statistics: SQL Compilations/Sec (SqlServer統計:編譯 /秒)

  編譯/秒 是指SQL Server每秒編譯執行計劃的次數。編譯一個執行計劃是資源密集型操作,耗時比較長且申請的資源比較多。彙編/秒應該和批請求/秒同時觀察,當兩者同時發生時,以獲取是否有併發症,對服務器有傷害。要做到這一點,可以使用 請示數/編譯數=?來保持一個穩定的數值。理想的情況下,可以爲每10批次一個編譯的要求。

  5. SQLServer: SQL Statistics: SQL Re-Compilations/Sec(SqlServer的:SQL統計:重編譯/秒 )

  有時因爲一些重要的事件發生時,導致執行計劃失效,SQL Server將重新編譯它。該重編譯/秒錶示每秒鐘重新編譯執行計劃的次數,和編譯一樣,都是代價高昂的操作,所以應儘量減少重新編譯次數。理想情況下我們要保留這個計數器小於編譯/秒(上面第4項)的10% .

  6. SQLServer: General Statistics: User Connections(SqlServer的:一般統計:用戶連接 )

  用戶連接計數器是指同一時刻連接到服務器的用戶的數量。我們需要觀察這個基線用戶連接數,不同時間的用戶數量是不同的,且有個高低區間。如果此計數器的值下降,並在系統上的負荷是相同的,那麼可能有一個瓶頸,導致我們的服務器不能來處理的正常負荷,這個需要檢查了。當然也要注意計數器的值下降也可能是因爲連接的確少了的原因。

  7. SQLServer: Locks: Lock Waits / Sec: _Total(SqlServer的:鎖:鎖等待/秒:所有 )

  爲了使SQL Server來管理系統上的併發用戶時,SQL Server需要經常鎖定資源,有時長有時短暫。鎖等待/秒是指每秒針系統等待恰好所申請的資源被鎖定的次數。理想情況下我們不希望任何要求等待鎖,因此,要保持這個計數器爲零或接近零。

  8. SQLServer: Access Methods: Page Splits / Sec(SqlServer的:訪問方法:頁拆分/秒 )

  這個計數器表示:當插入、更新數據時,由於原來的頁不夠存放了,需要進行分頁動作,那麼每秒種進行分析的次數,就是該指標,因爲拆分時執行性能昂貴,除了IO操作外,還導致表碎片越來越多,表性能低下。因此,減少頁拆分將有利於系統高效執行,需要進行合理的設計。理想的情況下,這個計數器應小於批請求/秒(上面第三項)的20% .

  9. SQLServer: General Statistic: Processes Block(SqlServer的:一般統計:進程阻塞)

  進程阻塞計數器是指某一時刻進程阻塞的的個數。當一個進程因爲申請的資源得不到釋放時,這個進程被阻塞了,而其它依賴於同一個資源的進程都不能向前推進,最後導致阻塞的進程越來越多,要解決這個問題唯一的辦法是直到其資源釋放。理想情況下我們不希望看到任何阻塞的進程,當進程被阻止時應該深入調查。

  10. SQLServer: Buffer Manager: Checkpoint Pages/Sec(SqlServer的:緩衝管理器:檢查點頁/秒 )

  檢查點頁/秒錶示每秒寫入到磁盤的確認檢查的頁數。我們應該根據自己的數據庫生成一個基準曲線。一旦建立了基準曲線,我們可以看看它是否還在上升。如果此計數器一直在上升,這有可能是因爲內存有問題,導致磁盤和內存的頁面交換在頻繁的進行。

發佈了45 篇原創文章 · 獲贊 16 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章