news 2026/3/26 21:05:11

MySql的慢查询(慢日志)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
MySql的慢查询(慢日志)

1.什么是慢查询?

慢查询日志,就是查询花费大量时间的日志,是指mysql记录所有执行超过long_query_time参数设定的时间阈值的SQL语句的日志,以帮助开发者分析和优化数据库查询性能。默认情况下,慢查询日志是关闭的,要使用慢查询日志功能,首先要开启慢查询日志功能。

2.如何定位慢SQL?

1、简单版:show profile;

执行 SHOW PROFILE 命令时,它会显示关于服务器线程执行的详细信息,包括每个线程所执行的每个语句的执行时间、I/O 操作、上下文切换等。

注意:通常在开发和问题诊断期间使用,而不是在生产环境中持续启用。

性能开销SHOW PROFILE功能在启用时会对服务器的性能产生额外负担。每当一个查询执行时,MySQL服务器会收集详细的性能信息,包括CPU时间、等待时间、上下文切换次数等。这些信息的收集和存储会消耗额外的CPU和内存资源,这在高并发的生产环境中可能是不可接受的。

-- 启用性能监控 mysql> set profiling=1; -- 执行SQL mysql> SELECT * from member -- 性能分析 mysql> show profiles;

2.详细版本:performance_schema(不推荐)

--查看performance_schema的属性 mysql> SHOW VARIABLES LIKE 'performance_schema';

通义tongyi.ai_你的全能AI助手-通义千问 (lxblog.com)

3. 开启慢日志

1、查看mysql的慢查询日志是否开启

如果看到slow_query_log的值是OFF,也就是mysql默认是不启用慢查询日志的。

这里还有个long_query_time,默认是10秒,也就是超过了10秒即为慢查询。建议业务配置3秒

log_queries_not_using_indexes,如果设置为ON,则会将所有没有使用索引的查询都记录为慢查询。

2、如何启用慢查询日志呢?

开启慢日志

set global slow_query_log=‘ON’;

-- 持久性,通过配置文件设置 [mysqld] log_output=FILE,TABLE slow_query_log=ON long_query_time=0.001 slow_query_log_file = /usr/local/mysql/mysql-8.0/logs/slow_query.log #一次性的,通过命令设置, long_query_time 是时间阈值。为方便测试,此处认为超过0.001s的就属于慢查询 mysql> SET GLOBAL log_output = 'FILE,TABLE'; mysql> set GLOBAL slow_query_log=ON; mysql> SET GLOBAL long_query_time = 0.001; mysql> SET GLOBAL slow_query_log_file = '/usr/local/mysql/mysql-8.0/logs/slow_query.log';
3、指定日志的输出格式

MySQL慢日志支持两种输出格式:TABLE和FILE 日志持久化

1. TABLE格式(推荐):慢日志以表格的形式存储在MySQL数据库中的`slow_log`表中。每个查询都作为一个记录插入到表中,每条记录包含了查询的详细信息,如执行时间、查询语句等。这种格式的主要优点是便于查询和分析,可以直接使用SQL语句对记录进行过滤和聚合操作。通过查询`slow_log`表,可以轻松地获取慢查询信息,比较适合进行简单的查询分析。

2. FILE格式:慢日志以文本文件的形式存储在磁盘上。每条慢日志记录都以一行文本的形式存储,记录中包含了查询的详细信息,如执行时间、查询语句等。这种格式的主要优点是方便日志的传输和存储,可以通过文件操作实现更复杂的查询和分析。通过阅读慢查询日志文件,可以详细了解查询的执行情况,包括执行时间等信息,并进行更深入的分析。

MySQL支持TABLE和FILE两种输出格式,可以用下面的命令来查看当前的输出格式:

show variables like '%log_output%';

设置输出格式:

set global log_output=’FILE’; set global log_output=’TABLE’; set global log_output=’FILE,TABLE’;
4、测试

因为我们的超时时间设置为10秒,那么下面这个查询就一定会超时。

select sleep(11);

查看TABLE记录的慢日志:

select * from mysql.slow_log;

初始化慢日志表:TRUNCATE TABLE mysql.slow_log;

这里面记录了查询时间、发起查询的客户端、扫描行数、执行的sql语句等信息。

5.查看FILE记录的慢日志:

先找到日志文件

打开文件,查看记录的内容:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/26 14:50:09

计算机深度学习毕设实战-基于python-CNN卷积神经网络对鸡和兔识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/3/24 13:28:25

深度学习毕设选题推荐:基于python-CNN卷积神经网络对鸡和兔识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/3/24 13:12:56

深度学习计算机毕设之基于python_CNN卷积神经网络对甜点识别

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/3/24 2:25:04

MySQL数据误删或者误更新如何恢复(详细步骤,一看就会)

目录 本篇文章适用场景 一、下载MyFlash工具二、误删数据恢复 先检查MySQL有没有开启binlog日志演示误删除数据利用MyFlash工具 反写SQL利用mysqlbinlog 执行反写的sql二进制文件恢复完成 三、误更新数据恢复 演示误更新数据查看binlog最近的更新记录 ,确定起始、结…

作者头像 李华
网站建设 2026/3/24 17:46:23

企业虚拟办公AI平台的灾备与容错设计:架构师确保系统7×24小时稳定运行

企业虚拟办公AI平台的灾备与容错设计:架构师确保系统724小时稳定运行 引言:虚拟办公时代,稳定是底线 在远程办公成为常态的今天,企业虚拟办公AI平台已成为组织协作的核心基础设施。从视频会议、实时文档协作到AI智能助手(如自动纪要、智能排班),这些服务的724小时高可…

作者头像 李华
网站建设 2026/3/9 17:35:12

互联网大厂Java面试实战:基于电商场景的Spring Boot与微服务技术问答

互联网大厂Java面试实战:基于电商场景的Spring Boot与微服务技术问答 在本次面试故事中,面试官与求职者谢飞机围绕电商场景展开技术问答,涵盖Java核心技术、Spring Boot框架、微服务架构及相关技术栈。通过三轮循序渐进的问题,展示…

作者头像 李华