{{ item.name }}
{{ item.name }}

{{ it.name }}

{{ it.text }}

{{ it.name }}

{{ innerIt.name }}

{{ innerIt.text }}

{{news.time}}
{{news.title}}
Slow Query Log 使用详解
2022-04-14发布 19,895浏览

一、 简介

慢查询日志,开启它我们可以通过参数来控制其记录执行或查询时间长的 SQL、全表扫描的 SQL、没有使用索引的 SQL。没错,它的作用就是记录哪些糟糕的、让数据库变慢的 SQL,把它们揪出来。

我们一般通过如下参数来控制 slow 的开启与记录:slow_query_log、slow_query_log_file、long_query_time、min_examined_row_limit、log_output、log_queries_not_using_indexes、log_throttle_queries_not_using_indexes。

slow_query_log:控制 slow_query_log 是否开启,参数 ON|OFF

slow_query_log_file:控制文件的写入位置,参数为文件的具体位置,如:/data/slow.log

long_query_time:设置 SQL 执行时间大于等于多少秒(可精确到微秒)时记录到日志中

min_examined_row_limit:设置检查的行数大于等于多少行时记录到日志中

log_output:设置慢查询记录到哪里,参数 FILE|TABLE

log_queries_not_using_indexes:控制查询过程中未使用索引或全表扫描的 SQL 是否记录到日志中

log_throttle_queries_not_using_indexes:开启 log_queries_not_using_indexes 后,此参数会限制每分钟可以写入慢速查询日志的此类查询的数量,参数设置 0 为不限制

二、查看方式与内容分析

慢日志分析的方式有两种,因为慢日志文件一般较小,所以一种方式为在慢日志文件中直接使用 less 或 more 命令来查看。第二种方式则是利用 MySQL 官方提供给我们的程序:mysqldumpslow 来快速查看 slowlog 日志中记录的慢 SQL。

对于我们详细来分析 SQL 的话,一般采用第一种方式,查找到对应时间点的对应 SQL 来进行分析。

image

那么如何读懂慢日志里面对这些信息呢?

image

通过这些我们就可以来明确的知道一条 SQL 究竟执行了多长时间的查询,有没有发生锁等待,此查询实际在数据库中读取了多少行数据了。

三、如何在线安全清空 slow.log 文件

在开启 log_queries_not_using_indexes 后,slow log 文件不仅仅会记录慢查询日志,还会把查询过程中未使用索引或全表扫描的 SQL 记录到日志中,久而久之日志的空间便会变得越来越大,那么如何在线且安全的清空这些 slow log 日志,为磁盘释放空间呢?

MySQL 对于慢日志的输出方式支持两种,TABLE 和 FILE,查看方法如下:

image

确认清楚输出方式后,可以分别对不同的输出方式选择不同的清空方法,本次将对两种清空方法共同介绍。

3.1 FILE 类型清空方法

1、查询 slow query log 开启状态

image

2、关闭 slow query log

image

3、确认关闭成功

image

4、对日志进行重命名或移除

image

5、重新开启 slow query log

image

6、执行 SQL 进行验证

image

7、验证新生成文件记录成功

image

image

8、清理旧的 slowlog 文件

image

3.2 TABLE 类型清空方法

1、先关闭 slow query log

image

2、确认关闭成功

image

3、TABLE 类型的 slowlog 存放在 mysql.slow_log 表中,对 slow_log 进行重命名为 old_slow_log

image

4、创建全新的 slow_log 文件拷贝原来 slow_log 文件的表结构

image

5、启动 slow query log

image

6、测试验证

image

image

7、删除旧的 slow_log 表

image

总结

该文章主要讲述了 slow log 的开启方式、分析方法与清空操作,熟练使用分析 slow log 文件可以实时观察数据库 SQL 的执行情况,并为 SQL 优化奠定基础。


上一篇
优化案例
400-820-6580 13916131869
marketing@actionsky.com
上海市闵行区万源路2138号泓茂中心2号楼
产品详情
关系型数据库
AI数据库
数据库智能管理平台
数据库生态产品
行业案例
金融行业
新零售行业
制造业
通信行业
更多
公司动态
最新新闻
国产化信息
技术分享
关于我们
公司简介
公司分布
国家专利
资质认证
扫码关注公众号
© Copyright 2017, All rights reserved by: 上海爱可生信息技术股份有限公司 沪ICP备12003970号-1 | 法律声明 | 网站地图
沪公网安备 31010402003331号