注意:
1.设置慢查询日志配置的账号需要数据库root账号登录
2.必须让mysql用户对慢查询日志有可写(w=2),上级目录可执行(x=1)的权限,否则无法开启慢查询日志
3.开启了慢查询日志会记录所有数据库符合条件的SQL
配置参数:
long_query_time:执行时间,单位 秒。设置时不需加单位s
slow_query_log_file:慢查询日志保存目录,设置时目录路径需要加引号''
slow_query_log:开关慢查询;ON 开启;OFF关闭
log_query_not_using_indexse: 记录所有未使用索引的SQL;ON 开启;OFF关闭
查看:
# show variables like '参数名';
设置:
# set global 参数名=xx;
使用:
1.# more/cat 慢查询日志名
没有执行次数
用more命令,按空格翻下页浏览。直接浏览不会过滤掉同类型重复执行的SQL
属性:
Time:SQL什么时候执行的
User@Host:数据库用户名@客户端ip
Query_time:SQL执行时间
Lock_time:锁时间
Rows_sent:执行成功后返回的行数
Rows_examined:检索行数
(精度保留到小数点后6位,单位秒)
最下面的是执行的SQL语句
使用MySQL自动的mysqldumpslow工具(mysql安装目录/bin/mysqldumpslow)或pt-query-digest工具(下载安装percona),浏览时可自动过滤掉重复的SQL
percona下载安装说明:https://blog.csdn.net/qq_41912505/article/details/103804591
2.# mysqldumpslow 慢查询日志名
没有检索行数
属性:
Count:执行次数
Time:执行时间的最大值(总执行时间)
Lock:锁时间的最大值(总锁时间)
Rows:返回的最大行数(总返回行数)
数据库用户名@客户端ip
最下面是执行的SQL语句
3.# pt-query-digest 慢查询日志名
属性:
Query:第几条SQL
Count:执行次数
Exec time:执行时间
Lock time:锁时间
Row sent:返回行数
Row examine:检索行数
(pct:占总慢查询比例;total:总和;min:最小;max:最大;avg:平均;95%:大部分;median:中间值)
Databases:数据库
Hosts:客户端
Users:数据库用户
Query_time distribution:执行时间分布
Tables:表
EXPLAIN:执行计划
最下面是执行的SQL语句