找到查询时间慢的sql 慢sql查询 查询慢sql

首先数据库需要开启慢sql日志

首先查看一下数据库是否开启慢sql日志
数据库查询命令
show variables like 'slow_query%';

变量名称 值
slow_query_log ON
slow_query_log_file /www/server/data/mysql-slow.log

slow_query_log 的值为ON 表示开启状态 OFF表示关闭状态

slow_query_log_file 的值 是日志的存放路径 所有出现慢sql查询的日志都放在这里

那么问题来了,慢sql 查询多少时间算慢呢,数据库查询命令

show variables like 'long_query_time';

变量名称 值
long_query_time 3.000000

这里表示3秒以上的都算慢sql 都会记录在日志中

如下

Time: 2021-10-12T03:03:39.953446Z

User@Host: root[root] @ [220.184.252.71] Id: 663

Query_time: 28.078618 Lock_time: 0.000069 Rows_sent: 97754 Rows_examined: 97754

use haoyangmao;
SET timestamp=1634007819;
SELECT * FROM yhouse_user_card;

个人理解

Time: 执行sql的开始时间

User@Host: 执行sql使用的账号 和 公网ip

Query_time: 表示sql执行完成使用的时间 这里花了28秒多才完成

执行的sql: SELECT * FROM yhouse_user_card; 这个sql很慢

到这里慢sql 就找到了,这时候就需要去处理这sql 需要判断它为什么这么慢

个人总结sql执行慢的原因有两大类;

一个是查询慢,还有一个是传输慢;

进一步去分析,处理就好了

如果数据库没有开慢日志查询则需要手动开启

原文地址:https://www.cnblogs.com/wangbingchen/p/15401798.html