MySQL慢查询
开启MySQL慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能。
查看MySQL慢查询状态
show variables like 'slow_query%';
Variable_name Value
------------------- ----------------------------------------------
slow_query_log OFF
slow_query_log_file /var/mysql/data/localhost-slow.log
-
slow_query_log 慢查询开启状态 OFF未开启 ON已开启
-
slow_query_log_file 蛮查询日志存放位置
show variables like 'long_query%';
Variable_name Value
--------------- -----------
long_query_time 10.000000
- long_query_time 查询超过多少秒才记录,默认10秒
临时修改慢查询配置
临时修改的缺点是,MySQL服务重启后失效
-- 1表示开启,0表示关闭
set global slow_query_log=1
-- 查询
show variables like 'slow_query%';
Variable_name Value
------------------- ----------------------------------------------
slow_query_log ON
slow_query_log_file /var/mysql/data/localhost-slow.log
永久修改慢查询配置
修改配置文件:/etc/my.cnf,在[mysqld]下增加:
slow_query_log=1
slow_query_log_file=/var/mysql/data/slowquery.log
long_query_time=1
-
slow_query_log 慢查询开启状态:1表示开启,0表示关闭
-
slow_query_log_file 慢日志存放的路径
-
long_query_time 查询超过多少秒才记录到慢查询日志中,默认10秒
修改完成后,重启MySQL服务
测试慢查询
- 执行慢查询操作
select sleep(12);
- 查看慢查询日志
cat /var/mysql/data/slowquery.log
Time Id Command Argument
# Time: 170605 9:25:09
# User@Host: root[root] @ localhost [::1] Id: 12
# Query_time: 12.066000 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 0
use test;
SET timestamp=1496625909;
select sleep(12);
- 查询慢查询记录数
show global status like '%slow_queries%';
Variable_name Value
------------- --------
Slow_queries 1
慢查询分析工具
mysqldumpslow