http://www.sqlsolutions.com/downloads/activity-monitor/Download.html
連接到你的服務(wù)器后,你會(huì)看到服務(wù)器樹結(jié)構(gòu)中的兩個(gè)類別:

點(diǎn)擊“Online Activity/SQL Heartbeat”節(jié)點(diǎn),你會(huì)立即看到五個(gè)不同的圖表。但是最好點(diǎn)擊“Historical Data”(歷史數(shù)據(jù)),等待一兩天,等到累積了更準(zhǔn)確的衡量指標(biāo)為止。之后,你該查看圖表上的哪些內(nèi)容呢?首先,你應(yīng)該關(guān)注一下Waits圖表:

順便說一下,你有沒有注意到這張圖上的周期性模式?比如說,周末期間活動(dòng)比較少,到了晚上活動(dòng)增加。為了更全面地了解數(shù)據(jù)庫在正常工作時(shí)間段的運(yùn)行狀況,你在分析時(shí)可以將這些時(shí)段排除在外(特別是由于這些時(shí)段可能是進(jìn)行完全備份的時(shí)候)。我們可以排除這類數(shù)據(jù),讓我們的圖表更流暢:

下一步是查看哪個(gè)類別最糟糕。如果主色是藍(lán)色或黃色(代表讀取或?qū)懭耄?,那么你的服?wù)器是磁盤輸入/輸出密集型的。下面是個(gè)示例:

為什么是輸入/輸出密集型的?點(diǎn)擊Physical R/W圖表。問題可能出在工作負(fù)載上,比如說輸入/輸出操作次數(shù)太多: 

非常頻繁的輸入/輸出活動(dòng)可能是糟糕的高速緩存命中率引起的。你可以點(diǎn)擊Cache Hits(高速緩存命中)按鈕來證實(shí):

注意:不要使用性能監(jiān)視器PerfMon所報(bào)告的“Cache Hits Ratio”(高速緩存命中率)。PerfMon報(bào)告的只是“醫(yī)院里的平均溫度”而已——它是對周末和繁忙時(shí)段、夜間索引碎片整理和白天操作求平均值,用的是不同的使用模式。

有時(shí)候,“高速緩存命中率”足夠好,但是延遲很差。點(diǎn)擊Seek Time(尋道時(shí)間)按鈕來證實(shí):

 

  

50毫秒(ms)意味著,服務(wù)器每秒只能執(zhí)行20次輸入/輸出操作。這樣的速度僅僅相當(dāng)于老式軟盤!
有些服務(wù)器是處理器密集型的,下面是一臺(tái)典型的處理器密集型服務(wù)器的模樣:

一般來說,如果服務(wù)器是處理器密集型的,情況并不壞,只要絕對數(shù)值不是很高(千萬要牢記:Y軸表示服務(wù)器每秒使用所有處理器時(shí)的處理器毫秒,所以在4個(gè)處理器上,每秒使用處理器最多可以有4000毫秒。)但是如果處理使用率的絕對值很高,那么點(diǎn)擊Query Stats(查詢統(tǒng)計(jì)數(shù)字)按鈕。你會(huì)看到按處理器、讀取和寫入分類的前十大有問題的查詢。這些查詢很可能是需要優(yōu)化的對象。

順便說一下,你每天可以通過電子郵件來獲得所有這些報(bào)告。只要在SQL Heartbeat中進(jìn)行配置:點(diǎn)擊工具欄中的Reports(報(bào)告)按鈕。

現(xiàn)在,其實(shí)只剩下了一個(gè)次要的方面。你有沒有看到上面的紅色尖峰?這些是鎖。各種各樣的鎖都很危險(xiǎn)。每天一小時(shí)的處理器使用時(shí)間沒什么問題,但是1分鐘的鎖定時(shí)間會(huì)導(dǎo)致超時(shí)、客戶不高興。死鎖更為嚴(yán)重。

為了給鎖和死鎖排除故障,請從下列網(wǎng)址安裝SQL Deadlock Detector
http://www.sqlsolutions.com/downloads/sql-deadlock-detector/Download.html
連接到同一臺(tái)服務(wù)器,在數(shù)據(jù)收集了幾小時(shí)后查看事件列表。

有時(shí)候,鎖包括幾十個(gè)進(jìn)程。從SQL Deadlock Detector里面,你能獲得關(guān)于參與鎖的進(jìn)程的所有細(xì)節(jié):

提供的信息包括鎖定表的名稱、具體的T-SQL語句以及父存儲(chǔ)過程。

小結(jié)
你可以迅速確定自己的SQL服務(wù)器其運(yùn)行狀況是否良好。實(shí)際上,說到處理最常見的性能問題,你只要遵照上述步驟,就能夠成為SQL服務(wù)器性能方面的專家。

分享到

zhaohang

相關(guān)推薦