1. 程式人生 > >SQL資料庫調優之效能監視篇

SQL資料庫調優之效能監視篇

前言

資料庫調優的故事很多,無數的客戶都曾經抱怨過資料庫效能問題。什麼很慢啊,CPU很高啊等等,但是當你仔細問他相關引數時候,比如CPU平常多少,記憶體,IO怎麼算正常?大多數客戶都一臉無辜的望著你說:不知道。

我認為,沒有了解自己資料庫的基本效能的客戶,抱怨資料庫效能問題,都是耍流氓!!!

今天我來聊聊如何監視資料庫效能!!

什麼是資料庫效能問題?

這個問題很有意思的。很多客戶抱怨資料庫有效能問題,但是什麼算效能問題呢?大多數客戶都是說客戶端反應很慢,開啟系統顯示不出來等等,但是慢是一個相對概念,沒絕對的。比如以前是2秒鐘開啟,變成了4秒鐘,客戶肯定會抱怨瘋的。而如果一個頁面從0.5秒到1秒鐘開啟,系統都增加了1倍的時間。但是客戶估計沒多少感知。所以所謂慢這個話題就比較流氓,沒資料說話的慢也是耍流氓!!

因此我的觀點是,用資料說話!!拿出效能資料,如果一條查詢從500ms變成了1000ms甚至3000ms 那就肯定是慢了。但是CPU 從30%變成了60% ,系統就一定慢了嗎?不一定,而是可能快了!!納尼…..這是什麼邏輯?秀逗了?這就是效能調優的哲學!!

關於資料庫效能的哲學問題

資料庫效能問題至少有以下幾個層面

  • 資料庫本身的效能問題
  • 資料庫的執行環境既伺服器作業系統的相關效能問題
  • 物理環境問題,如網路問題

資料庫本身問題和執行環境不可分割, 但是資料庫本身使用的伺服器資源,不一定是伺服器所有的資源,那麼也就有這樣的情況發生,作業系統曾經有大量的資源,如CPU、記憶體、磁碟、網路資源。但是資料庫本身卻未使用到相關資源,在資料庫曾經發生瓶頸。而作業系統未發生。這聽起來好詭異的事情!!但是是有的。比如X64的系統安裝了X86的SQL 版本,而未曾進行相應設定,則SQL 只能只用不超過2G的記憶體。結果就是資料庫會慢的如蝸牛,然後磁碟佇列巨高,CPU 幾乎100%。這是發生過的!

作業系統的效能問題就更好玩了,一臺伺服器有可能使用了N多的功能,承載了更多的服務,如何確保資源更多的給到了SQL 這就是需要確認的問題!

而網路層,本來不該有問題的,但是網路產生瓶頸的故事也是發生過的。 雖然現在都千兆,萬兆但是依然會有發生。故事是有的,等有酒的時候講。

關於效能的問題,永遠不要看表面,這就是哲學!CPU 過高,有可能是IO不夠。IO不夠好可能是記憶體不夠。而記憶體不夠並不意味伺服器要加記憶體,有可能是索引問題。所以要搞清楚效能問題,不要猜,資料說話!!而分析要有條理,這點我要感謝我學的專業!對於分析問題比較全面。不要問我學的什麼專業!!!

如何監視

說了一堆廢話後,我們來點實際的,上菜了。
如何監視效能,如何獲得性能的相關資料,其實windows 和SQL 為你準備好了一切。
最簡單的神器就是:效能監視器。在管理工具中找到,或者執行 perfmon即可開啟如下:

這裡寫圖片描述

新增計數器裡面,就可以看到所能監控的各種指標。這既是你需要了解的資料。
關於效能計數器的時候,其實可以寫一篇很長的blog了。這裡就不寫了。

效能監視器可以幫助你:

  • 實時監控
  • 定時監控,保留資料
  • 跟蹤和收集資料
  • 分析報告

實時監控就是看當前系統的效能情況,基本上來說讓我想起了當年我在專案上監控整個系統的情景,我的桌面上放了4個顯示屏,每個螢幕上放了4個性能監視器,每個監視器裡面放十幾個指標。時刻注意系統變化,那是一段用酒可以聊的故事。

而定時收集,是可以將資料儲存成檔案或者到資料庫中,這樣可以來做歷史分析使用。
當然有了資料就要分析,分析就要有神器,分析的申請,下一篇blog介紹,超級好用的神器!!!微軟還免費,還開源!!!

關於監視指標

系統的計數器有幾千個上萬個指標,我們需要看什麼呢? 這個就要靠自己的經驗和實踐了
對於資料庫伺服器我習慣看的指標有以下的:

這裡寫圖片描述

對於這些指標,到底什麼樣的值是正常的,可以到technet上去查說明。
在新增計數器的時候,左下角有一個顯示描述,也有比較詳細的描述。
另外在即將介紹的神器裡面有詳細的對引數的說明。敬請期待!

後記

任何不運維和不管理,不監視的資料庫系統。抱怨資料庫有效能問題都是耍流氓!

用好資料庫先從如何監視效能開始!監視效能不僅僅是獲取效能指標,而是要理解系統的運轉狀況。從而知道系統的閥值在什麼地方,才能知道什麼時候是危險,什麼時候是安全!

後序會有案例分析,有神器介紹,有具體調優內容,這是一個長線過程。可以講幾十節課程。今天先來點開胃菜。敬請期待!!!