MySQL数据库的慢查询日志是默认关闭的我们可以通过
show variables like ‘%slow_query_log%’;来查询日志是否开启
如何开启慢日志?
set global slow_query_log = 1;
如何关闭慢日志?
set global slow_query_log = 0;
tips:这里的开启与关闭只针对当前数据库,如果我们换另一个数据库的话默认还是关闭;
如何才能永久开启慢日志?
需要配置my.cnf文件,在my.cnf文件下添加slow_query_log = 1和slow_query_log_file=你的慢日志文件的绝对路径
什么样的查询语句才会被记录?
默认是查询时间大于(不等于)10s的查询语句才会被记录
如何查看默认时间?
show variables like ‘long_query_time%’;
如何更改默认时间?
set global long_query_time = 3;
在我们执行完这条语句的时候最好重新登录MySQL
执行成功,但是再次查询的结果还是10s,想要看到更改的结果可以使用
- show global variables like ‘long_query_time%’;比原先的语句多了一个global;
- 也可以重新登录MySQL 再使用show variables like ‘long_query_time%’;
- 必须重新登录MySQL这个指令才会被实际的设置否则当我们输入select sleep(4);的时候无法记录
如何查询我们这个日志里有多少条记录呢?
- show global status like ‘%Slow_queries%’;
日志分析工具mysqldumpslow
- s:表示按照何种方式排序
- c:访问次数
- l:锁定时间
- r:返回记录
- t:查询时间
- al:平均锁定时间
- ar:平均返回记录数
- at:平均查询时间
- t:返回前面多少条的数据
- g:后面跟正则表达式
常用组合
- 得到返回记录集最多的10个SQL
- mysqldumpslow -s -r -t 10 日志文件地址
- 得到访问次数最多的10个SQL
- mysqldumpslow -s -c -t 10 日志文件地址
- 得到按照时间排序的前10条里含有左连接的查询语句
- mysqldumpslow -s -t -t 10 “left join” 日志文件地址
建议在使用mysqldumpslow命令的时候配合| 和more使用防止信息过多