默认关闭
记录执行时间超过阈值的sql语句
开启之后对性能有影响,建议只在调优时开启
查询各个参数的当前值:
show variable like '% %';
1.开启慢查询日志
slow_query_log (0 关闭,1 开启)默认关闭
2.执行时间超过(是>不是>=)几秒的语句将被记录
long_query_time 默认10秒,单位秒
3.慢查询日志的输出方式(记录在文件中,还是保存在数据库中)
log_output (file 文件 table 数据库)默认文件
4.慢查询日志输出为file,file的路径
slow-query-log-file(5.6之后)
log-slow-queries(5.6之前)
不设置,系统默认生成host_name-slow.log
5.慢查询日志输出为database,保存在那个数据表中
mysql.slow_log(这是一个系统自带的表)
6.是否将没有使用索引的sql也记录下来
log_queries_not_using_indexes(默认关闭,0-关闭,1-开启)
修改参数
set global slow_query_log=1;
重启生效
想要永久生效,修改配置文件
windows:安装目录下my.ini
linux:/etc/my.cnf,/etc/mysql/my.cnf
慢查询日志分析工具
mysqldumpslow 【选项】 【参数】
-s(sort)排序方式
c(count)查询的次数
t(time)查询所用的时间
l(lock)锁定的时间
r(row)返回记录的条数
at平均查询时间
al平均锁定时间
ar平均返回记录条数
-t(top)返回前多少
-g匹配一个正则表达式,大小写不敏感
例如:
musqldumpslow -s c -t 10 /./*_slow.log
返回访问次数前十的sql语句