轉載請註明,來自:http://blog.csdn.net/skyman_2001
Mysql自帶了壓力測試工具mysqlslap,所以我們可以不用自己編寫程序來測試Mysql讀取的壓力。壓力測試shell腳本如下:
#!/bin/sh
while true
do
mysqlslap --concurrency=100 --iterations=10 --create-schema='test' --query="insert into test(c1,c2,c3,c4) values(1,1,1,'a')" --number-of-queries=200 --debug-info -uroot -p123456
usleep 100
done
上面腳本的意思是每隔100ms循環做這樣的事:模擬100個mysql客戶端,對數據庫test的表test執行200次插入(number-of-queries = concurrency * 每個mysql客戶端的查詢次數,所以這裏的每個mysql客戶端的查詢次數是2次),迭代10次。--debug-info是打印內存和CPU的相關信息。
接着我們可以編寫shell腳本來輸出指定時間間隔(比如1秒)內的mysql操作次數,shell腳本如下:
#!/bin/sh
lastTimes="0"
while true
do
currentTimes=$(mysql -uroot -p'123456' -e "show global status like 'Com_insert'" | sed '1d' | awk '{print $2}')
times=$(expr ${currentTimes} - ${lastTimes})
lastTimes="${currentTimes}"
echo "${times}"
sleep 1
done
查看mysql各種操作的次數,可以通過查看global status裏的'Com_'開頭的變量,它們就是mysql的操作命令,比如Com_insert就是插入命令、Com_update就是更新命令,等等,具體可以查看文檔說明。將相鄰兩次的次數相減,就得到這個時間間隔內執行的次數。
PS:除了iostat等命令外,也可以通過top命令來查看io的負載(看wait的百分比,如果大於等於 1 / cpu核數,則說明硬盤IO有問題)。請參考:Understanding Disk I/O - when should you be worried?