mysql慢查询配置及分析

1、进入mysql目录,打开my.cnf文件(这个文件是MySQL的配置文件,我们在这个文件里设置慢查询的开关和阈值,找不到my.cnf可用命令 find / -name my.cnf

2、在my.cnf 加入以下配置:

log_output=table #慢查询的记录方式

slow_query_log=1 #1是开启慢查询日志,0是关闭

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

CONST 查询索引字段,且表中只有一行匹配

EQ_REF 主键或者唯一索引

REF 非唯一索引

RANGE 索引的范围查询

INDEX 索引

ALL 全表扫描 (效率极低的检索方式

8、将问题反馈给开发,开发进行调优,添加外键约束,同时会生成索引。

posted @ 2020-12-10 16:34  Frank13054  阅读(568)  评论(0编辑  收藏  举报