Mysql 慢查询
文章目录
什么是慢查询
顾名思义,执行很慢的查询,那很慢的标准是什么?
我们可以通过查询 long_query_time 变量查看当前数据库慢查询的阀值是多少;
show variables like 'long_query_time';

但是数据库默认是把慢查询日志给关闭的,那怎么知道现在数据库慢查询是开还是关呢?
show variables like 'slow_query_log';

默认是关闭,如果打开了,就会变成 ON;那如何将慢查询打开呢?
我们可以通过执行:
set global slow_query_log = 1/on;
进行开启,关闭改成 0/off
但是通过这种方式无法持久化,mysql 重启之后又会恢复默认值,那如何才能修改默认配置呢?这个时候我们就来看看 my.cnf 文件。
my.cnf 配置
long_query_time = 10
log-slow-queries = /var/lib/mysql/mysql-slow.log
long_query_time 是指执行超过多久的SQL会被日志记录下来,这里是 10 秒。
log-slow-queries 是指日志保存在哪里,为空的时候,系统会给慢查询日志赋予主机名,并加上slow.log;如果设置了参数 log-long-format,那么所有没有使用索引的查询也将被记录.
这是一个非常有用的日志。它对于性能的影响不大。
慢查询解读
# Time: 210121 6:00:47
# User@Host: xxx[xxx] @ xxxx [10.252.15.11]
# Query_time: 2.936062 Lock_time: 0.000171 Rows_sent: 0 Rows_examined: 54522
SET timestamp=1611180047;
select * from xxxxxx;
第一行:记录时间
第二行:用户名 、用户的IP信息、线程ID号
第三行:执行花费的时间【单位:毫秒】、执行获得锁的时间、获得的结果行数、扫描的数据行数
第四行:这SQL执行的时间戳
第五行:具体的SQL语句
文章作者 Brook
上次更新 2022-07-19