首先数据库需要开启慢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执行慢的原因有两大类;
一个是查询慢,还有一个是传输慢;
进一步去分析,处理就好了
如果数据库没有开慢日志查询则需要手动开启