企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
## 慢查询日志 是一种mysql提供的日志,记录所有执行时间超过某个时间界限的sql的语句。这个时间界限,我们可以指定。在mysql中默认没有开启慢查询,即使开启了,只会记录执行的sql语句超过10秒的语句。 慢查询日志文件一般放在数据库文件data下面. #### 查看是否开启慢查询日志 ~~~ show variables like 'slow_query%'; ~~~ 默认是未开启,即使是开启了也只记录了查询时间超过10秒的. ~~~ +---------------------+-----------------------------------+ | Variable_name | Value | +---------------------+-----------------------------------+ | slow_query_log | OFF | //慢查询开启状态 | slow_query_log_file | /var/lib/mysql/homestead-slow.log | //慢查询日志存放位置 +---------------------+-----------------------------------+ ~~~ #### 查看设定的慢查询时间 ~~~ show variables like 'long_query_time'; ~~~ 默认是10秒 ~~~ +-----------------+-----------+ | Variable_name | Value | +-----------------+-----------+ | long_query_time | 10.000000 | //超过10秒及进行记录 +-----------------+-----------+ ~~~ #### 开启慢查询 ~~~ set global slow_query_log='ON'; ~~~ ~~~ +---------------------+-----------------------------------+ | Variable_name | Value | +---------------------+-----------------------------------+ | slow_query_log | ON | | slow_query_log_file | /var/lib/mysql/homestead-slow.log | +---------------------+-----------------------------------+ ~~~ #### 设置慢查询日志存放的位置 ~~~ set global slow_query_log_file='/usr/local/mysql/data/slow.log'; ~~~ #### 设置慢查询时间 ~~~ set global long_query_time=1; ~~~ #### 查看设置后的参数 ~~~ +---------------------+-----------------------------------+ | Variable_name | Value | +---------------------+-----------------------------------+ | slow_query_log | ON | | slow_query_log_file | /var/lib/mysql/homestead-slow.log | +---------------------+-----------------------------------+ ~~~ ~~~ +-----------------+----------+ | Variable_name | Value | +-----------------+----------+ | long_query_time | 4.000000 | +-----------------+----------+ ~~~ #### 测试 ~~~ select sleep(5),字段名 from 表名; ~~~ #### 查看慢查询记录数 ~~~ show global status like '%slow%'; ~~~ ~~~ +---------------------+-------+ | Variable_name | Value | +---------------------+-------+ | Slow_launch_threads | 0 | | Slow_queries | 3 | +---------------------+-------+ ~~~ **注意:一般情况下,一条SQL语句查询时间较慢是因为没有索引.加完索引后,索引文件会变大**. #### 查看文件 ~~~ # Time: 2018-03-16T08:09:44.612652Z # User@Host: homestead[homestead] @ localhost [] Id: 176 # Query_time: 5.001448 Lock_time: 0.000157 Rows_sent: 1 Rows_examined: 1 SET timestamp=1521187784; select sleep(5),name from user; ~~~ #### 通过修改文件开启慢查询 在my.ini文件中进行配置 ![](https://box.kancloud.cn/4a1e3335c8bd713aab61e3646afdea09_603x129.png)