慢查询日志用来记录执行时间超过指定时长的查询。它的主要作用是:帮助我们发现那些执行时间特别长的 SQL 查询,并且有针对性地进行优化,从而提高系统的整体效率。
业务场景
当我们的数据库服务器发生阻塞、运行变慢的时候,检查一下慢查询日志,找到那些慢查询,对解决问题很有帮助。
场景解决方案
在 MySQL 的安装目录中(C:\ProgramData\MySQL\MySQL Server 8.0),我们可以找到 MySQL 的配置文件“my.ini”。这个文件是一个文本格式的文件,可以直接用记事本打开来阅读。
slow-query-log=1 -- 表示开启慢查询日志,系统将会对慢查询进行记录。
slow_query_log_file="GJTECH-PC-slow.log" -- 表示慢查询日志的名称是"GJTECH-PC-slow.log"。这里没有指定文件夹,默认就是数据目录:"C:\ProgramData\MySQL\MySQL Server 8.0\Data"。
long_query_time=10 -- 表示慢查询的标准是查询执行时间超过10秒
除了刚刚的这些变量,控制慢查询日志的还有一个系统变量:min_examined_row_limit
。
这个变量的意思是,查询扫描过的最少记录数。这个变量和查询执行时间,共同组成了判别一个查询是否是慢查询的条件。
如果查询扫描过的记录数大于等于这个变量的值,并且查询执行时间超过 long_query_time
的值,那么,这个查询就被记录到慢查询日志
中;
--查看最少记录数
mysql> show variables like 'min%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| min_examined_row_limit | 0 |
+------------------------+-------+
1 row in set, 1 warning (0.00 sec)
注意:如果修改了 MySQL 的配置文件“my.ini
”,就需要重启服务器,这样才能使修改生效。
案例1:
之前我运行的一个慢查询,被记录到了慢查询日志中。这个例子记录了一个运行时间超过 10 秒的慢查询的发生时间、连接所属的用户、执行的时长、锁表的时长和扫描过的记录数等相关信息。
C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld.exe, Version: 8.0.23 (MySQL Community Server - GPL). started with:
TCP Port: 3306, Named Pipe: MySQL
Time Id Command Argument
# Time: 2021-03-25T07:20:33.412260Z -- 执行开始时间
# User@Host: root[root] @ localhost [::1] Id: 13 -- 用户
# Query_time: 10.166435 Lock_time: 0.000000 Rows_sent: 0 Rows_examined: 0 -- 执行时长、锁表时长、检查的记录数
use demo;
SET timestamp=1616656823;
未经允许不得转载:任鹏个人博客 » MySQL慢查询日志(Slow Query Log)
最新评论
Forex wiki. https://lt.forex-stock-bitcoin-brokers.com
Magnificent items from you, man. I have take note your stuff
Following on from the 3rd March Meetings held by economic de
It is remarkable, rather valuable message dfgdlfg2131.32
一般都会有一个沙盒期的,过了沙盒期就会慢慢放出来
百度不收录是应为是新站的原因吗?
The spike in consumer prices that left inflation at a four-d