Mysql开启慢查询日志
查看mysql的慢查询日志是否开启
show variables like '%query%';
可以看到slow_query_log的值是OFF,mysql默认是不启用慢查询日志的。这里还有个long_query_time,默认是10秒,也就是超过了10秒即为慢查询。
log_queries_not_using_indexes,如果设置为ON,则会将所有没有使用索引的查询都记录为慢查询
启用慢查询日志:
set global slow_query_log='ON';
指定日志的输出格式:
MySQL支持TABLE和FILE两种输出格式,可以用下面的命令来查看当前的输出格式:
show variables like '%log_output%';
设置输出格式:
set global log_output='FILE';
set global log_output='TABLE';
set global log_output='FILE,TABLE';
注意事项:
开启慢查询日志后,由于日志记录操作,在一定程度上会占用CPU资源、影响mysql的性能;但是可以阶段性/临时性开启,用来定位性能瓶颈。性能优化相关的sql语句,要全部在cmd窗口里执行,而不要在SQLyog里,因为SQLyog会修改我们的sql语句,在最后加上limit 0, 1000
数据库优化:
开启慢查询日志,定位执行慢的SQL语句
设置慢SQL的时间阀值
开启慢查询日志的开关
执行SQL的时候,如果执行时间超过了时间阀值,这条SQL就会被记录到日志文件里
针对执行慢的SQL,添加索引做SQL优化