mysql慢查询配置及分析
1、进入mysql目录,打开my.cnf文件(这个文件是MySQL的配置文件,我们在这个文件里设置慢查询的开关和阈值,找不到my.cnf可用命令 find / -name my.cnf)
2、在my.cnf 加入以下配置:
log_output=table #慢查询的记录方式
long_query_time=1 #设置慢查询的阈值(执行速度超过1秒就会被记录在mysql.slow_log中)
3、配置好之后,在mysql中执行show VARIABLES like '%query%'; 重点看两个变量long_query_time,slow_query_log(on为开启状态,off为关闭状态),慢查询的数据存放在mysql.slow_log中。
4、修改完my.cnf必须重启mysql服务service mysqld restart 或者 systemctl start mysqld
5、执行 select sleep(2) 执行时间2秒,超过long_query_time=1,会记录在mysql.slow_log中(此步骤只为测试慢查询配置是否生效)
6、执行select * from mysql.slow_log order by start_time desc; 看表中是否有数据,如有数据则点击sql_text字段的BLOB右键复制,则可以复制出该条慢查询对应的SQL语句
7、将慢查询SQL语句复制到编辑器里,选择该SQL语句点击解释按钮,观察type字段,以下是type字段的解释
CONST 查询索引字段,且表中只有一行匹配
EQ_REF 主键或者唯一索引
REF 非唯一索引
RANGE 索引的范围查询
INDEX 索引
ALL 全表扫描 (效率极低的检索方式)
8、将问题反馈给开发,开发进行调优,添加外键约束,同时会生成索引。