相信朋友對SQL Server性能調優相關的知識或多或少都有一些了解。雖然說現在NOSQL相關的技術非常的火熱,但是RMDB(關系型數據庫)與NOSQL是并存的,并且適用在各種的項目中。在一般的企業級開發中,主要還是RMDB占據主導地位。并且在互聯網項目中,也不是摒棄了RMDB,例如MySQL就在很多的互聯網應用中發揮著作用。所以,對數據庫的調優是個值得深入學習的課題。本系列文章,主要講述與SQL Server相關的調優知識,希望能夠為朋友們帶來一些幫助。
相關廠商內容
HTML5多媒體組件的使用——第一部
QCon北京2012:深入淺出NoSQL&大數據和NoSQL
盛大云計算創意開發大賽-infoq成社區大獎有力爭奪者
Flash Builder 4.5高級版試用版免費高速下載
阿里云100萬重金招募開發者
相關贊助商
阿里云100萬重金招募開發者。
本篇提綱如下:
傳統SQL Server調優方式的比較
什么是DMV
DMV簡單示例
DMV可以解決哪些問題
傳統SQL Server調優方式的比較
我們平時可以采用很多工具對SQL Server的性能進行診斷分析與調優:性能計數器,SQL Server Profiler和Database Engine Tuning Advisor(數據庫引擎優化顧問,簡稱DTA)。下面我們就來對每一個簡單的說明一下,并且講述各自的優缺點。
性能計數器
對于使用Windows操作系統的開發朋友,對性能計數器已經不陌生了,最簡單的方式就是運行”perfmon”,就可以打開性能監視器的窗口,然后添加對應的計數器,進行監控。如下圖所示:
性能計數器每隔一段時間就回去收集相關的數據,并且我們還可以把這些數據保存起來,便于以后的分析。
優點:使用方便,并且數據收集的比較全面。因為這些操作系統是集成的,不需要額外的花費,就可以直接使用。
缺點:數據不夠準確,分析數據成本很高,并且對系統的性能產生影響。因為性能計數器在收集數據的時候,要定時的去抓取系統相關的數據,這樣,會對性能造成影響,如果抓取的時間間隔越短,那么對系統的影響就越大。另外,對于收集到的數據,也需要有經驗豐富的人去分析數據,并且如果要準確的分析出結果,需要收集大量的數據,人力和時間的成本也高。
SQL Server Profiler
每次談到SQL Server調優,勢必要講到SQL Server Profiler(為了后續的講述方便,我們將會把它簡稱為Profiler)。使用Profiler能夠捕獲一段時間內SQL執行的每個查詢的記錄。當數據庫服務器上有大量很少運行的查詢時,或者有特別的用戶查詢運行的時候,這個工具很有用。使用Profiler還能捕獲到指定時間段內的工作負荷,然后可以在恢復的數據庫系統中進行重現。
下面就是一個使用Profiler的界面:
啟動Profiler的位置 |
跟蹤文件 |
說明 |
在正在監視的數據庫服務器上啟動Profiler的跟蹤 |
將跟蹤的數據文件保存到服務器的文件系統或共享目錄中 |
優點:這種方式適用于非生產環境和低負載服務器上的開發和對數據庫應用進行性能診斷和跟蹤。 缺點:加大了服務器的I/O讀寫操作 |
在本機開啟Profiler,連接遠程的數據庫服務器 |
將跟蹤的數據文件保存在本地 |
優點:減小了數據庫服務器的I/O操作。 缺點:加大了網絡傳輸的壓力,占用數據庫服務器的網絡資源和CPU資源。因為需要將大量的跟蹤數據傳送到本機,這樣占用了網絡資源;而數據在傳輸的時候,需要CPU將之序列化,加大了CPU的操作。 |
數據庫引擎優化顧問(DTA)
DTA一般需要和Sql Server Profiler結合在一起使用。DTA主要是對Profiler中收集到的數據進行純數據的綜合分析,所以它分析結果的準確性非常依賴于Profiler收集的數據量的多少。Profiler收集的數據越多,那么DTA分析的就越準確,但是這樣也對數據庫服務器的壓力越大,反之。所以,一般不建議在大負載或者生產環境下的數據庫服務器上面采用。
如果有需要在大負載,或者生產環境下對數據庫的性能進行分析與調優,那如何處理?
這就是我們本次系列文章要討論的話題。
什么是DMV
使用過SQL Server的朋友,對DMV(Dynamic Management Views,動態管理視圖)或多或少都有一些了解或者耳聞。其實DMV就是SQL Server內核的元數據,通過對內部的元數據的分析,我們快速而準確獲取很多與SQL Server內部相關的信息,從而進行性能分析。
當查詢在SQL Server中運行時,SQL Server會自動的將此次活動的相關信息記錄下來,并且保存在內存之中,這些活動信息,就稱之為:DMV。
不同類型的DMV信息,有不同的用途,例如,可以相關的DMV來對性能進行診斷,從而提升性能,或對數據庫的運行進行監控,或解決故障等。
原文轉自:http://www.anti-gravitydesign.com