前文
隨著業務量增長,資料庫的複雜程度也會成正比增長
這裡跟大家分享一個好用壓測資料庫工具SqlQueryStress
在Dev可以模擬高併發時產生的問題,下面會分享我之前Prod遇到問題並解決問題過程
詳細資訊可以看SQLServer-Merge-condition-problem
SQLQueryStress介紹
在執行效能調教和測試高併發產生問題時,我們會關注幾個特別資訊
- CPU執行時間
- logical read數值
- Total執行時間
在此工具都有相對應的資訊提供給我們觀看
SQLQueryStress可以讓我們輸入要重複執行次數跟使用多少個Thread來執行.
Total Exceptions
可以協助查看目前語法執行上有多少錯誤產生(這個功能在高併發驗證問題很有幫助)
Sample Data
1 | CREATE TABLE [dbo].[PriceLimitation]( |
1 | CREATE OR ALTER PROC [dbo].[CalculateStake] |
執行語法
1 | DECLARE @CategoryID int, |
使用SqlQueryStress重現問題
基本script建立好後,我們可以利用SqlQueryStress
來進行壓力測試.
- Number of Iterations 設定成 100
- Number of Threads 設定成 100
使用100 Thread,重複跑100次.
之後就可以重現Prod出現的Merge問題了,有了這個Baseline我們就可以開始進行優化改善了.
小結
SqlQueryStress
這個工具可以很快速幫助我們模擬許多高併發問題,但在使用這工具時偶爾會遇到UI卡住或無法停止問題,這時候就需要強制停止應用程式.
此文作者:Daniel Shih(石頭)
此文地址: https://isdaniel.github.io/sqlquerystress-intro/
版權聲明:本博客所有文章除特別聲明外,均採用 CC BY-NC-SA 3.0 TW 許可協議。轉載請註明出處!