mysql优化(2) 观察mysql进程状态

环境准备,安装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; //关闭状态观察

  

  

posted @ 2015-10-29 13:15  怪盗dark  阅读(272)  评论(0编辑  收藏  举报