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

本文介绍如何使用Sysbench进行MySQL的压力测试,并通过shell脚本实时监控MySQL进程状态,帮助理解不同状态下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; //关闭状态观察

  

  

转载于:https://www.cnblogs.com/guaidaodark/p/4920191.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值