10.性能优化-监控-MySQL慢查询

1.记录慢查询配置
show variables where variable_name like 'slow%' ; --查看默认日志路径
查询结果:--不用的机器可能不同
slow_query_log_file=/var/lib/mysql/centos-slow.log

修改mysqld配置文件:/usr /my.cnf[一般在/etc/my.cnf,本机在/user/my.cnf],添加以下几项:
[mysqld]
slow_query_log=ON
long_query_time=0.2
long_query_time较低(5.0及之前)的mysql版本不支持小数


set global slow_query_log=ON; --如果通过这个脚本设置的话,重启mysql后就失效了

log-queries-not-using-indexes --表示记录没有使用索引的语句到慢查询日志

配置好上述参数后,重启mysqld服务,开始对性能差的查询SQL进行监测。
2.分析慢查询日志
运行一段时间后,慢查询日志会记录到上面路径的日志文件中,因为日志记录很多,不可能一条一条记录的去分析,可以通过mysql自带的msyqldumpslow进行分析。
1) # 找出平均执行时间最长的10条SQL
mysqldumpslow -t 10 -s at /var/lib/mysql/centos-slow.log > /var/lib/mysql/centos-slow-at.log
2) # 找出总执行时间最长的10条SQL
mysqldumpslow -t 10 -s t /var/lib/mysql/centos-slow.log > /var/lib/mysql/centos-slow-t.log
3) # 找出执行次数最多的10条SQL
mysqldumpslow -t 10 -s c /var/lib/mysql/centos-slow.log > /var/lib/mysql/centos-slow-c.log
4) # 找出返回记录数最多的10条SQL
mysqldumpslow -t 10 -s r /var/lib/mysql/centos-slow.log > /var/lib/mysql/centos-slow-r.log


3.记录所有SQL
[mysqld]
general_log=ON

show variables like '%log%';
查询结果:--记录所有sql的日志文件
general_log_file=/var/lib/mysql/centos.log

或者将long_query_time的值设置为0记录所有的SQL
4.p6spy
性能优化,通常需要将同一事务中所有执行的sql进行分析和优化,这就要获取这一事务执行过程中执行的所有sql语句。一般应用的架构均有控制是否显示所有操作sql的参数,如果没有的话,可以通过p6spy记录。

1)将p6spy.jar包拷贝到WEB-INF/lib目录下
2)将spy.properties拷贝到WEB-INF/classes目录下
3)将应用的驱动修改为com.p6spy.engine.spy.P6SpyDriver
4)将spy.properties中的realdriver设置为真实的驱动,com.mysql.jdbc.Driver
5)运行应用,可以看到tomcat的bin目录下有个spy.log文件,这个文件记录了所有操作的sql语句。仅需关注statement类型的即可,resultset和result类型的语句不需关心。
5.参考资料
http://blog.csdn.net/zm2714/article/details/8510893

你可能感兴趣的:(性能优化,MySQL慢查询)