在系統正式上線之前,DBA一般都要測試一下伺服器的效能
正文
隨著市場份額的SQL Server的發展隨著時間的推移,有越來越多的對SQL伺服器效能調優的需求。
有不同的團隊和個人採用各種各樣的方法提高SQLSERVER伺服器的效能,
而且我認為這些記錄SQLSERVER troubleshooting 的基本步驟和提高各種程式效能的文件對SQLSERVER社群是有意義的
磁碟
為了SQLSERVER能有效執行,監控和優化SQLSERVER的磁碟子系統是一個重要的方面
我們需要非常明確磁碟的效能需求
Avg. Disk Sec/Read 這個計數器是指每秒從磁碟讀取資料的平均值
下面的列表顯示這個計數器值的範圍,並指出這個計數器所處範圍的意思
少於 10 ms - 非常好
在 10 - 20 ms 之間- 還可以
在 20 - 50 ms 之間- 慢,需要關注
大於 50 ms –嚴重的 I/O 瓶頸
磁碟效能測試工具
(1)CrystalDiskMark
(2)HDTUNE 硬碟檢測修復工具
(3)ATTO Disk Benchmark
辨別I/O瓶頸
PhysicalDisk Object:Avg. Disk Queue:所選物理磁碟在取樣期間被排隊的磁碟讀寫請求平均值
如果你的磁碟佇列長度經常超出SQLSERVER磁碟使用峰值的2倍,那意味著可能有I/O瓶頸了
Avg. Disk Sec/Read:每秒從磁碟讀取資料的平均值
Avg. Disk Sec/Write:寫入資料到磁碟的平均時間,Avg. Disk Sec/Read參考指標
Physical Disk:%Disk Time磁碟時間是所選磁碟驅動器繁忙處理讀寫請求時所花時間的百分比,一個指標就是如果這個值大於50%,那麼就存在I/O瓶頸
Avg. Disk Reads/Sec:在磁碟上的讀操作的比率。確保這個數字小於磁碟吞吐量的85%。當這個值超過85%磁碟訪問時間會以指數式增長
Avg. Disk Writes/Sec c:在磁碟上的寫操作的比率。確保這個數字小於磁碟吞吐量的85%。當這個值超過85%磁碟訪問時間會以指數式增長
對於更多的資訊,可以參考“如何建立效能計數器集”:http://technet.microsoft.com/en-us/library/cc722148.aspx
磁碟驅動器的位置:
為了不同的目的,你需要使用不同的驅動器來存放下面的東西
獨立的磁碟延時需求:
資料庫大於15ms
事務日誌大於2ms
Tempdb資料庫大於2ms
磁碟速度的優先順序
意思是說,Tempdb放在單獨的物理磁碟,事務日誌檔案放在單獨的物理磁碟,資料檔案放在單獨的物理磁碟,作業系統放在單獨的物理磁碟,
資料庫備份檔案放在單獨的物理磁碟
一般我們的做法:不可能有那麼多單獨的物理磁碟,一般就是做了磁碟陣列的儲存
C盤放作業系統檔案
D盤放資料檔案和事務日誌檔案 和Tempdb資料檔案和Tempdb日誌檔案
E盤放資料庫備份檔案
使用Performance Monitor (Perfmon.exe)來監控系統效能
為了捕獲SQLSERVER特定的效能指標,你需要使用下面的計數器
Processor: % Processor Time :平均應該低於75% (最好低於50%)
System: Processor Queue Length:平均每個邏輯CPU應該低於2,例如在一個2邏輯CPU的機器上,他應該保持在4
Memory—Pages/sec:平均應該低於20(最好低於15%)
Memory—Available Bytes :可用記憶體應該保持在50MB以上
Physical Disk—% Disk Time:
Physical Disk—Avg. Disk Queue Length :每個磁碟平均應該低於2,例如:一個RAID5磁碟,這個指標應該平均低於10
Physical Disk—Avg. Disk Reads/sec :取決於CPU和磁碟的大小,應該低於相對應磁碟的吞吐量的85%
Network Interface—Bytes Total/sec :用於統計網路頻寬方
SQL Server: Buffer Manager—Page Life Expectancy:用於統計記憶體,應該保持在300秒
SQL Server: 一般統計使用者的連線數 來估計大概使用的記憶體
SQL Server: Databases— Transactions/sec :每秒的事務數
SQL Server: Databases—Data File(s) Size KB:用於統計資料庫資料檔案的大小,衡量磁碟子系統的效能
SQL Server: Databases—Percent Log :衡量磁碟子系統的效能