❶ 如何測試sqlserver性能
對於DBA來講,我們都會做新伺服器的性能測試。我會從TPC的基準測試入手,使用HammerDB做整體性能評估(前身是HammerOra),跟廠商數據對比。再使用DiskSpd針對性的測試磁碟IO性能指標(前身是SQLIO),再到SQLIOSIM測試存儲的完整性,再到ostress並發壓力測試,對於資料庫伺服器遷移,我們還會收集和回放Profiler Trace,並收集期間關鍵性能計數器做對比。
下面我著重談談使用HammerDB的TPC-C來做SQL Server基準測試。
自己寫負載測試代碼很困難
為了模擬資料庫的負載,你想要有多個應用程序用戶和混合數據讀寫的語句。你不想總是對單一行更新相同的值,或者只是重復插入假的值。
自己動手使用Powershell、C#等語言寫負載測試腳本也不是不可能,只是太消耗時間,你需要創建或者恢復資料庫,並做對應的測試。
免費而簡單的壓測SQL Server:使用HammerDB模擬OLTP資料庫負載
HammerDB是一個免費、開源的工具,允許你針對SQL Server、Oracle、MySQL和PostgreSQL等運行TPC-C和TPC-H基準測試。你可以使用HammerDB來針對一個資料庫生成腳本並導入測試。HammerDB也允許你配置一個測試運行的長度,定義暖機階段,對於每個運行的虛擬用戶的數量。
首先,HammerDB有一個自動化隊列,讓你將多個運行在不同級別的虛擬用戶整合到一個隊列--你可以以此獲得在什麼級別下虛擬用戶性能平穩的結果曲線。你也可以用它來模擬用於示範或研究目的的不同負載。
用於SQL Server上的HammerDB的優缺點
HammerDB是一個免費工具,它也極易訪問和快速的啟動基準測試和模擬負載的方法。它的自動程序特性也是的運行工作負載相當自動。
主要缺點是它有一個學習曲線。用戶界面不是很直觀,需要花費時間去習慣。再你使用這個工具一段時間之後,將會更加容易。
HammerDB也不是運行每一個基準測試。它不運行TPC-E基準,例如,SQL Server更熱衷於當前更具發展的OLTP基準TPC-E。如果你用HammerDB運行一個TPC-C基準,你應該理解它不能直接與供應商提供的TPC-C基準結果相比較。但是,它是免費的、快速的、易用的。
基準測試使用案例
基準測試負載不能精確模擬你的應用程序的特點。每個負載是唯一的,在不同的系統有不同的瓶頸。對於很多使用案例,使用預定義的基準測試仍然是非常有效的,包括以下性能的比較:
多個環境(例如:舊的物理伺服器,新的虛擬環境)
使用各種因素的不同及時點(例如:使用共享存儲和共享主機資源的虛擬機的性能)
在配置改變前後的點
當然,對一個資料庫伺服器運行基準測試可以影響其他SQL Server資料庫或者相同主機上其他虛擬機的性能,在生產環境你確保有完善的測試計劃。
對於自學和研究來說,有預配置的負載非常棒。
開始使用基準測試
你可以從閱讀HammerDB官方文檔的「SQL Server OLTP Load Testing Guide」開始。
❷ 轉載:如何提升磁碟IO性能
目前,磁碟是機械操作的,主要是在讀取和寫入磁碟之前查找磁軌的過程中。磁碟附帶的讀寫緩存大小對磁碟讀寫速度至關重要。具有快速讀寫的磁碟通常具有較大的讀寫緩存。磁碟的查找過程是機械的,它確定其隨機讀寫速度將明顯低於順序讀寫。當我們進行系統設計和實現時,我們需要考慮磁碟的這個特性。
FastDFS是一個開源且高效的分布式文件系統。它的初始實現,文件以散列模式隨機分布到多個目錄,後來又添加了順序存儲實踐。通過比較測試,發現文件按目錄順序存儲,寫文件的效率明顯高於目錄隨機存儲的效率。
目前,磁碟順序讀取的速度還不錯。例如,普通硬碟的IO可以達到每秒40~60MB,更好的硬碟可以達到每秒100MB左右。在多進程或多線程並發讀取磁碟的情況下,隨著並發數量的增加,磁碟IO效率將大大降低。主要是因為每次讀取和寫入,軌道可能具有大的偏移,並且軌道定址時間增加,導致磁碟IO的性能急劇下降。對於此方案,優化方案是最小化並發讀取和寫入的進程或線程的數量。您可以使用鎖定機制或專用磁碟IO線程來讀取和寫入磁碟。在FastDFS 2.x版本中,磁碟讀取和寫入是使用專用線程完成的。
為了充分利用多個磁碟的效率,建議不要使用傳統的RAID方法。一個好的做法是分別安裝每個磁碟,並通過程序控制多個磁碟的並發讀寫。使用單個磁碟安裝,可以使用多台計算機實現文件備份和冗餘。
在大量文件(例如數千萬個文件)之後,當隨機訪問許多文件時,文件系統的性能將急劇下降。業界流行的做法是通過將多個小文件組合成一個大文件來減少文件數量。 FastDFS 3.0支持將多個小文件合並和存儲到一個大文件中。發展進度相對平穩。預計3.0版將於5月發布。
改進磁碟IO的另一個技巧是盡可能多地寫入或盡可能多的讀取。換句話說,將程序的讀寫緩沖區設置得盡可能大。例如,日誌或重做日誌寫入,不是每次都直接寫入磁碟,而是先緩存到內存中,然後在緩沖區滿時寫入磁碟,也可以定期寫入磁碟。
操作系統和C庫函數通常會緩存寫入文件的內容,以減少實際寫入文件的次數。直接調用系統函數fsync或C函數fflush將使系統的緩存機制無效,這將強制將內容刷新到磁碟。除非必要,否則不要執行強制刷牙操作。如果在操作過程中不慎將重要的數據弄丟了,可以用閃靈數據恢復找回數據;如果有重要的資料不希望別人進行查看等操作,可使用閃靈文件夾鎖進行加鎖。