mysql5.6.29添加慢查询sql日志

查看mysql版本命令:java

SELECT VERSION();

查看是否开启慢查询功能:mysql

show global variables like '%slow%';

查询结果:sql

若是看到slow_query_log为ON,则说明,开启了慢查询功能,socket

查看设置慢查询的时写日志的时间开关工具

show global variables like '%long%';

查询结果:优化

此处long_query_time我设置的是0.1秒,若是超过0.1秒就写日志文件spa


具体配置操做:rest

vi /ect/my.cnf
日志

配置内容以下:code

# long sql congfig by kg
long_query_time=0.1
#log_queries_not_using_indexes=1
slow_query_log=on
slow_query_log_file=/var/log/mysql-slow.log

注:不要开启log-queries-not-using-indexes没有索引查询记录功能,这个功能实际用处不大。就是记录SQL查询的时候,没有索引的统统记录。虽然索引对查询的速度有影响,但要看数据量大小。由于开启了这个功能之后,select * from tab这样的查询也会被记录在日志中,很快日志文件就会被垃圾信息给充满,从而影响主要的查询慢日志记录的查看。

从新启动 mysql:

service mysqld restart

验证慢查询:

 SELECT SLEEP(1);

查看日志结果:

[root@yjw00 log]# cat mysql-slow.log 
/usr/sbin/mysqld, Version: 5.6.29-log (MySQL Community Server (GPL)). started with:
Tcp port: 3306  Unix socket: /var/lib/mysql/mysql.sock
Time                 Id Command    Argument
# Time: 160504 17:50:36
# User@Host: root[root] @  [192.168.0.159]  Id:     3
# Query_time: 1.000563  Lock_time: 0.000000 Rows_sent: 1  Rows_examined: 0
use test;
SET timestamp=1462355436;
SELECT SLEEP(1);

select sleep(1)在日志中了,说明查询超过0.1秒了。

最后

一、日志不能说明一切问题,知识表象,可能跟锁表、系统繁忙的偶发性有关,固然,若是某条SQL语句常常查询慢那基本能够判断是能够再次优化的。

二、不要开启log-queries-not-using-indexes没有索引查询记录功能,这个功能实际用处不大。就是记录SQL查询的时候,没有索引的统统记录。虽然索引对查询的速度有影响,但要看数据量大小。由于开启了这个功能之后,select * from tab这样的查询也会被记录在日志中,很快日志文件就会被垃圾信息给充满,从而影响主要的查询慢日志记录的查看。

三、MySQL自带了mysqldumpslow工具用来分析slow query日志,或者其它工具也能够,经过工具配合能够更好的分析。

相关文章
相关标签/搜索