環境準備,安裝sysbench
wget http://nchc.dl.sourceforge.net/project/sysbench/sysbench/0.4.12/sysbench-0.4.12.tar.gz
cd sysbench-0.4.12-1.1
sh autogen.sh
./configure
make && make install
建立tjproce.sh
cd /usr/local/nginx/html/bench1
vim tjproce.sh
内容如下
#!/bin/bash
while true
do
mysql -uroot -e 'show processlist \G'|grep State|uniq|sort -rn >> proce.txt
usleep 100000 //每秒執行10次
done
用sysbench進行壓力測試
cd /usr/local/src/sysbench-0.4.12-1.1/sysbench/bin/
./sysbench --test=tests/db/oltp.lua --mysql-table-engine=innodb --mysql-
user=root --db-driver=mysql --mysql-db=test --oltp-table-name=user --oltp-
table-size=3000 --mysql-socket=/var/lib/mysql/mysql.sock prepare
./sysbench --test=tests/db/oltp.lua --mysql-table-engine=innodb --mysql-
user=root --db-driver=mysql --mysql-db=test --oltp-table-name=user --oltp-
table-size=3000 --mysql-socket=/var/lib/mysql/mysql.sock run //指定test庫
//--test=tests/db/oltp.lua 對于某些版本可能為 --test=oltp
然後啟動tjproce.sh檔案
當sysbench測試結束後觀察proce.txt
more proce.txt |sort|uniq -c|sort -rn
以下為狀态說明
converting HEAP to MyISAM 查詢結果太大時,把結果放在磁盤 //比較浪費資源
create tmp table 建立臨時表(如group時儲存中間結果)
Copying to tmp table on disk 把記憶體臨時表複制到磁盤
locked 被其他查詢鎖住
logging slow query 記錄慢查詢
注:把臨時表記憶體變小,重制前
打開mysql
show variables like '%size%';
set globle tmp_table_size=1024;
set session tmp_table_size=1024; //把mysql記憶體調為1024位元組
set profiling=1; //打開狀态觀察
select * from sbtest1; //随便執行sql語句
show profiles; //這時會出現一張狀态表
show profile for query 1; //後面的數字是根據上一張狀态表的ID
set profiling=0; //關閉狀态觀察