[SQL SERVER][Tools] 善用 SQLIO
對於資料庫效能來說,
定義Storage(IOps(Input/Output Operations Per Second)、Latency..等)是相當重要的一個步驟,
通常你需要安裝一些測試軟體產生相關數據結果來輔助,
而測試硬碟I/O效能工具相當多,但對於SQL Server來說就屬 SQLIO 和 IOmeter 使用佔多數
(之前還有發現一個 wmarow (採用Web) 評測工具),
這些工具有助於你評估NAS或SAN相關設備效能是不是有達到你想要的水準,
真實世界中我看到資料庫採取Raid5較多(透過硬碟數量去彌補Raid 10 Writes IOps差距),
對於C/P值來說每人都有不同的見解(有人就是要最大容量,有人就是要最大效能..等),
anyway~~~今天我介紹個人較常使用的硬碟I/O效能測試工具SQLIO,
但SQLIO不是模擬 SQL Server 的磁碟 I/O 模式,
如果你想模擬SQL Server 硬碟I/O模式的話,需使用SQLIOSim來模擬,
下面就來練習操作一下SQLIO並評估一顆硬碟效能。
硬碟資訊
型號:WDC WD2500AAJS-60Z0A
介面:SATA2
容量:250 GB(232.9)
快取大小(Buffer size): 8192 KB
轉速:7200 RPM
磁區大小(sector size): 512 bytes
1.設定參數檔案(C:\Program Files\SQLIO\param.txt)
修改如下
d:\mytestfile.dat :測試檔案路徑和名稱
2 :設定執行緒數量(建議依CPU數量設定)
0x0 :遮罩(Mask)
100 :測試檔案大小(mb),該數值請大於系統可用記憶體10倍,以避免大部分的快取效果。
更詳細可察看使用者手冊(Using SQLIO.rtf)
2.設定相關參數執行SQLIO(參數解釋如下)
先測試循序寫入
sqlio -kW -s30 -fsequential -o8 -b8 -LSP -Fparam.txt timeout /T 60
-o:設定IO佇列深度,增加該值可以產生較高的吞吐量
-LS:取得硬碟延遲資訊(建議擷取)S=system,P=process。
-k :讀取(R)或寫入(W)。
-s :執行測試時間(秒為單位),建議5~10分鐘。
-b :設定配置(區塊)大小。
-f :指定IO區塊磁區模式(random(隨機) 或 sequential(循序))。
-F:指定參數檔案。
在測試循序讀取(避免測試資料倍快取影響,測試前請先重新啟動伺服器)
sqlio -kR -s30 -fsequential -o8 -b8 -LSP -Fparam.txt timeout /T 60
測試隨機寫入
sqlio -kW -s30 -frandom -o8 -b8 -LSP -Fparam.txt timeout /T 60
測試隨機讀取
sqlio -kR -s30 -frandom -o8 -b8 -LSP -Fparam.txt timeout /T 60
最後你可以透過效能與容量測試所提供的基本建議值來做個比較。
如何提高IOps
1.針對資料庫特性、容量使用適當的Raid Level。
一般來說Raid10 會比Raid50來的快(適用中小型資料庫,寫入效能高於讀取效能),
但Raid50比Raid10提供較多容量(適用大型資料庫,讀取效能高於寫入效能)...等。
針對大型資料庫微軟建議採用Raid50。
Summary Comparison of RAID Levels
2.使用高轉速儲存裝置。如15K SAS會大於10K SAS,但成本也較貴。
3.儲存裝置有Virtual Lun 技術。
Virtual Lun可以不受Raid Level空間限制,
可以將資料自動分配到較快速的硬碟中存放,
藉以提高儲存裝置的利用率和效能,
知名廠商EMC..等皆有使用相關技術。
參考
如何使用 SQLIOSim 公用程式,以模擬在磁碟子系統上的 SQL Server 活動
效能與容量測試 (FAST Search Server 2010 for SharePoint)
[SQL SERVER][Performance]找出硬體Bottleneck
SQLIO Tips and Tricks for LOB Disk Performance Testing
What is it and how to calculate IOPS (Exchange, SQL, SharePoint, others)?
RAID 50 offers a balance of performance, storage capacity, and data integrity