MySQL中慢查询日志 慢查询分析与优化实战技巧

要优化mysql性能,慢查询日志是关键切入点。1. 开启慢查询日志可在配置文件中设置slow_query_log=1、指定日志路径、设定long_query_time(如1秒)并记录未使用索引的sql;也可在运行时用set global命令动态开启。2. 查看日志需关注query_time(执行耗时)、lock_time(锁等待时间)、rows_examined(扫描行数)和rows_sent(返回行数),这些指标反映sql性能状况。3. 常见慢查询原因包括:缺少合适索引导致全表扫描、索引使用不当(如对字段使用函数)、返回数据过多、join操作不合理。4. 优化建议包括添加索引、调整sql写法、限制返回数据量、优化join逻辑,并通过explain分析执行计划。5. 推荐使用mysqldumpslow、pt-query-digest等工具辅助分析日志,结合可视化平台实现监控与趋势分析,从而持续优化sql性能。

MySQL中慢查询日志 慢查询分析与优化实战技巧

在MySQL性能优化中,慢查询日志是最基础、也最直接的切入点。很多数据库问题其实都藏在慢查询里,只要打开这个开关,就能看到“卡顿”的源头。这篇文章讲的是怎么用好慢查询日志,从开启到分析再到优化,一步步带你理清思路。

如何开启并配置慢查询日志?

想看慢查询日志,首先得让它记录下来。默认情况下,MySQL是不开启这项功能的。你可以通过修改配置文件(通常是my.cnf或my.ini)来启用:

slow_query_log = 1slow_query_log_file = /var/log/mysql/slow.loglong_query_time = 1log_queries_not_using_indexes = 1

上面几个参数的意思分别是:

开启慢查询日志 指定日志路径 设置超过1秒的SQL为“慢” 记录未使用索引的查询

改完配置记得重启MySQL服务或者重新加载配置。如果你不想重启,也可以在运行时动态设置:

SET GLOBAL slow_query_log = 'ON';SET GLOBAL long_query_time = 1;SET GLOBAL log_queries_not_using_indexes = 'ON';

注意:有些系统上动态修改long_query_time后可能需要断开当前连接才会生效。

怎么看懂慢查询日志的内容?

慢查询日志的格式其实挺直观的。一条典型的日志长这样:

# Time: 2025-04-05T10:00:01.123456Z# User@Host: root[root] @ localhost []# Query_time: 2.123456  Lock_time: 0.000123 Rows_sent: 1  Rows_examined: 100000SET timestamp=1717581601;SELECT * FROM orders WHERE user_id = 12345;

重点看这几个指标:

Query_time:整个查询耗时,单位秒。这是判断是否“慢”的关键。Lock_time:等待锁的时间,如果很高,可能是表锁竞争严重。Rows_examined:扫描了多少行数据。数值大说明没走好索引。Rows_sent:实际返回给客户端的数据行数。如果和扫描行数差很多,说明做了大量无效过滤。

有时候你会看到Rows_examined很大但Query_time却不高,这可能是因为用了缓存(比如query cache),但这不是长久之计,还是得优化SQL本身。

常见慢查询原因及优化建议

慢查询的成因多种多样,但最常见的几种情况如下:

✅ 缺少合适的索引

一个没有索引的where条件,可能导致全表扫描。比如下面这个语句:

SELECT * FROM users WHERE email = 'test@example.com';

如果email字段没有索引,那每次执行都要扫全表。解决办法很简单:加索引。

ALTER TABLE users ADD INDEX idx_email (email);

✅ 索引使用不当

有时虽然加了索引,但SQL写法不对,导致索引失效。例如:

SELECT * FROM orders WHERE DATE(created_at) = '2025-04-01';

这里用了函数处理字段,会让索引失效。应该改成范围查询:

SELECT * FROM orders WHERE created_at >= '2025-04-01' AND created_at < '2025-04-02';

✅ 查询返回太多数据

有时候一个SQL返回了几千条甚至几万条数据,不仅慢还占资源。这时候要考虑是不是真的需要这么多数据,能不能分页?能不能加条件限制?

✅ 关联表太多或关联方式不对

多表JOIN时如果没有合理使用索引,或者JOIN顺序不合理,也可能拖慢速度。建议:

尽量减少JOIN数量被驱动表的JOIN字段要有索引使用EXPLAIN查看执行计划,看看有没有Using filesort或临时表

工具推荐:让分析更高效

光靠看日志效率太低,可以用一些工具辅助分析:

mysqldumpslow:MySQL自带的慢日志分析工具,能统计出现频率高的慢SQL。

mysqldumpslow -s t -t 10 /var/log/mysql/slow.log

上面命令按时间排序,显示前10条慢SQL。

pt-query-digest(Percona Toolkit的一部分):比mysqldumpslow强大很多,支持聚合分析、输出报告等,适合做定期巡检。

可视化平台:像Prometheus + Grafana配合mysqld_exporter,可以实时监控慢查询趋势;有些公司也会自建慢查询分析平台,统一收集和展示。

基本上就这些。慢查询日志看似简单,但真要分析到位并不容易。关键是养成定期检查的习惯,结合日志和执行计划去定位问题。很多时候优化一条SQL,性能提升就能立竿见影。

以上就是MySQL中慢查询日志 慢查询分析与优化实战技巧的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/34673.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
win10关闭屏幕不锁屏教程
上一篇 2026年10月18日 18:06:11
php如何切割字符串
下一篇 2025年11月8日 12:20:27

相关推荐

  • 炒菜、雕刻、绘画、汽车人变形!MakeAnything用扩散Transformer解锁多任务过程生成

    炒菜、雕刻、绘画、汽车人变形!MakeAnything用扩散Transformer解锁多任务过程生成炒菜、雕刻、绘画、汽车人变形!MakeAnything用扩散Transformer解锁多任务过程生成炒菜、雕刻、绘画、汽车人变形!MakeAnything用扩散Transformer解锁多任务过程生成炒菜、雕刻、绘画、汽车人变形!MakeAnything用扩散Transformer解锁多任务过程生成

    新加坡国立大学show lab的研究成果makeanything,让ai学会了分步骤创作!这项突破性研究,通过巧妙结合diffusion transformer (dit)和非对称lora技术,首次实现了高质量、跨领域的程序化序列生成,并在21类任务中展现出优异性能及强大的泛化能力。 ☞☞☞AI 智…

    2026年10月18日 • 用户投稿
    000
  • 红果免费短剧缓存的视频在哪个文件夹_红果免费短剧缓存视频位置

    红果免费短剧缓存的视频在哪个文件夹_红果免费短剧缓存视频位置红果免费短剧缓存的视频在哪个文件夹_红果免费短剧缓存视频位置红果免费短剧缓存的视频在哪个文件夹_红果免费短剧缓存视频位置红果免费短剧缓存的视频在哪个文件夹_红果免费短剧缓存视频位置

    红果免费短剧缓存路径可通过应用内设置或文件管理器查找,通常位于Android/data/com.hongguo.shortvideo/cache目录下,也可用ES文件浏览器按.mp4等格式搜索,或通过ADB命令获取私有目录访问权限定位具体文件。 如果您在使用红果免费短剧应用时想要查找已缓存的视频文件…

    2026年10月18日 • 用户投稿
    100
  • mysql怎么查询字段数量

    mysql怎么查询字段数量mysql怎么查询字段数量mysql怎么查询字段数量mysql怎么查询字段数量

    查询方法:1、利用DESCRIBE语句展示表结构,语法“DESCRIBE 表名;”,输出的总记录行数就是字段数量;2、通过使用count()函数统计系统表“information_schema.COLUMNS”中指定数据条数来查询字段数量。 本教程操作环境:windows7系统、mysql8版本、D…

    2026年10月18日 • 用户投稿
    100
  • php框架laravel和thinkphp哪个好?

    php框架laravel和thinkphp哪个好?php框架laravel和thinkphp哪个好?php框架laravel和thinkphp哪个好?php框架laravel和thinkphp哪个好?

    laravel和thinkphp各有优势,选择取决于项目需求和个人偏好。1. laravel适合追求开发体验和丰富生态系统的项目。2. thinkphp适用于需要高性能和灵活性的项目。 引言 在选择PHP框架时,Laravel和ThinkPHP常常是开发者们面临的两大选择。今天我们就来探讨一下这两个…

    2026年10月18日 • 用户投稿
    100
  • win10虚拟内存不足怎么办_win10虚拟内存调整与优化方法

    首先手动调整虚拟内存大小至物理内存1.5-3倍,或迁移分页文件至其他磁盘以减轻系统盘压力,同时清理C盘空间确保分页文件正常运行,优先升级物理内存从根本上减少依赖,并通过任务管理器终止高内存占用的异常进程以缓解系统压力。 如果您在使用Windows 10系统时遇到程序响应缓慢、出现“虚拟内存不足”的警…

    2026年10月18日
    000
  • 如何恢复回收站删除的文件 解决方法详解

    如何恢复回收站删除的文件 解决方法详解如何恢复回收站删除的文件 解决方法详解如何恢复回收站删除的文件 解决方法详解如何恢复回收站删除的文件 解决方法详解

    在日常使用电脑时,误删文件的情况时有发生,特别是当回收站被清空后,许多人误以为文件已彻底消失。实际上,文件被删除后并不会立即从硬盘物理清除,系统只是将其占用的空间标记为“可覆盖”。只要数据未被新内容覆盖,仍有机会恢复。以下是几种常见的恢复已删除文件的方法,可根据具体情况选择适用方案。 方法一:利用W…

    2026年10月18日 • 用户投稿
    000
  • u盘重装系统后桌面文件如何恢复,u盘重装系统电脑文件还在吗

    u盘重装系统后桌面文件如何恢复,u盘重装系统电脑文件还在吗u盘重装系统后桌面文件如何恢复,u盘重装系统电脑文件还在吗u盘重装系统后桌面文件如何恢复,u盘重装系统电脑文件还在吗u盘重装系统后桌面文件如何恢复,u盘重装系统电脑文件还在吗

    一、准备工作 在开始恢复桌面数据前,请先准备好以下工具: 1. 一台可用的电脑:用于连接U盘并执行恢复操作。2. 可靠的数据恢复程序:建议使用Recuva、EaseUS Data Recovery Wizard等专业软件。 二、操作步骤 1. 插入U盘:将U盘插入电脑的USB接口,并确认电脑已正确识…

    2026年10月18日 • 用户投稿
    000
  • 怎么修改mysql登录密码

    怎么修改mysql登录密码怎么修改mysql登录密码怎么修改mysql登录密码怎么修改mysql登录密码

    修改方法:1、打开cmd命令窗口,执行“mysql -u root -p”命令并输入密码,以root权限登录mysql;2、执行“set password for 用户名@localhost=password(“新密码”);”命令修改密码。 本教程操作环境:windows10…

    2026年10月18日 • 用户投稿
    100
  • Swoole Table 在高性能计数器场景中的应用

    Swoole Table 在高性能计数器场景中的应用Swoole Table 在高性能计数器场景中的应用Swoole Table 在高性能计数器场景中的应用Swoole Table 在高性能计数器场景中的应用

    swoole table适合用于高性能计数器场景。1)它提供高效、线程安全的计数机制,适用于高并发环境。2)通过共享内存和原子操作,确保计数操作快速且无数据竞争。3)可以实现全局或用户独立计数器,灵活性强。 引言 在高性能计数器场景中,选择合适的数据结构和工具至关重要。Swoole Table作为一…

    2026年10月18日 • 用户投稿
    200
  • 最新安卓阵营高端手机性价比排名:小米15 Pro仅第七

    最新安卓阵营高端手机性价比排名:小米15 Pro仅第七最新安卓阵营高端手机性价比排名:小米15 Pro仅第七最新安卓阵营高端手机性价比排名:小米15 Pro仅第七最新安卓阵营高端手机性价比排名:小米15 Pro仅第七

    近日,cnmo注意到,安兔兔发布了2025年6月中国大陆安卓手机的性价比榜单。 在4000元以上的价格区间内,最具性价比的十款机型如下: 第一名,红魔10S Pro,配备12GB内存和256GB存储 第二名,努比亚Z70S Ultra摄影师版,搭载12GB内存和256GB存储 第三名,OPPO Fi…

    2026年10月18日 • 用户投稿
    000
  • Spring框架是什么以及它包含哪些组件?

    Spring框架是什么以及它包含哪些组件?Spring框架是什么以及它包含哪些组件?Spring框架是什么以及它包含哪些组件?Spring框架是什么以及它包含哪些组件?

    Spring框架概述 Spring Framework是一个流行的开源Java应用框架,旨在简化企业级应用的开发。 Spring生态系统 豆包爱学 豆包旗下AI学习应用 674 查看详情 Spring Framework并非单一组件,而是一个庞大的生态系统,包含多个模块,共同提供完整的应用开发解决方…

    2026年10月18日 • 用户投稿
    000
  • AI时代需要什么样的园区网络?答案藏在四个新技术里

    AI时代需要什么样的园区网络?答案藏在四个新技术里AI时代需要什么样的园区网络?答案藏在四个新技术里AI时代需要什么样的园区网络?答案藏在四个新技术里AI时代需要什么样的园区网络?答案藏在四个新技术里

    你的下一位同事,可能不是真人! 微软发布的《2025年度工作趋势指数》显示:82%的企业计划在未来12至18个月内,将智能体纳入核心团队,作为数字员工参与业务运营。 当AI进入到“同事时代”,对园区网络的需求也发生了根本性变化:智能体的流畅运行,对Wi-Fi提出了极致低时延和高带宽的要求;基于业务优…

    2026年10月18日 • 用户投稿
    000
  • 电脑桌面文件无法拖动怎么办 5个排查步骤快速解决

    电脑桌面文件无法拖动怎么办 5个排查步骤快速解决电脑桌面文件无法拖动怎么办 5个排查步骤快速解决电脑桌面文件无法拖动怎么办 5个排查步骤快速解决电脑桌面文件无法拖动怎么办 5个排查步骤快速解决

    电脑桌面文件无法拖动是不少windows用户常碰到的困扰,这类问题通常与系统设置、鼠标设置或驱动异常有关。若你正面临此情况,不妨尝试以下5种解决方案进行排查和修复。 一、确认鼠标是否正常运行 首先应排查的是鼠标本身是否存在问题,因为鼠标故障或连接不良也会导致拖动功能失效。 1、如有备用鼠标,建议更换…

    2026年10月18日 • 用户投稿
    000
  • MySQL复制实例详解之GTID复制

    MySQL复制实例详解之GTID复制MySQL复制实例详解之GTID复制MySQL复制实例详解之GTID复制MySQL复制实例详解之GTID复制

    本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于gtid复制的相关问题,gtid是对于一个已提交事务的编号,并且是一个全局唯一的编号,下面一起来看一下,希望对大家有帮助。 推荐学习:mysql视频教程 从MySQL 5.6.5开始新增了一种基于GTID的复制方式。通过GTID保证了每…

    2026年10月18日 • 用户投稿
    000
  • Laravel Sanctum 替代 Passport?轻量级 API 认证方案

    Laravel Sanctum 替代 Passport?轻量级 API 认证方案Laravel Sanctum 替代 Passport?轻量级 API 认证方案Laravel Sanctum 替代 Passport?轻量级 API 认证方案Laravel Sanctum 替代 Passport?轻量级 API 认证方案

    sanctum 是 passport 的轻量级替代方案,适用于 api 认证。1) sanctum 通过生成 api 令牌简化认证过程,适用于不需要复杂 oauth2 流程的应用。2) 它支持 spa 和移动应用认证,配置简单,性能高。3) 使用示例包括基本用法和高级用法,如为不同设备生成令牌。4)…

    2026年10月18日 • 用户投稿
    100
  • Premiere如何制作怀旧风格视频

    Premiere如何制作怀旧风格视频Premiere如何制作怀旧风格视频Premiere如何制作怀旧风格视频Premiere如何制作怀旧风格视频

    premiere是一款功能强大的视频剪辑工具,能够帮助用户轻松创作出充满复古气息的怀旧风视频。 精选素材奠定氛围 在开始制作前,素材的选择尤为关键。建议搜集具有时代印记的老照片、胶片片段或带有复古色调的影像资料,例如上世纪的家庭录像带画面、黑白电影镜头等。将这些富有年代感的素材导入premiere,…

    2026年10月18日 • 用户投稿
    000
  • 轻松搞定远程图片上传:Yii2-Upload-From-Url 的实践指南

    在开发过程中,我需要实现一个功能,允许用户直接粘贴图片链接,系统自动下载并保存图片。传统的做法需要手动处理http请求、文件下载和保存等步骤,代码冗长且容易出错。 我尝试了几种方法,但都显得繁琐且不够优雅。这时,我发现了 igogo5yo/yii2-upload-from-url 这个扩展,它提供了…

    2026年10月18日
    100
  • mysql怎么增加行

    mysql怎么增加行mysql怎么增加行mysql怎么增加行mysql怎么增加行

    mysql增加行的方法:1、用“INSERT INTO 表名 列名1,…列名n VALUES (值1…,值n);”语句,列名和值的顺序相对应;2、用“INSERT INTO 表名 SET 列名1=值1,列名2=值2,…;”语句插入一行数据。 本教程操作环境:windows7系统、mysql8版本、D…

    2026年10月18日 • 用户投稿
    100
  • 如何在 ThinkPHP 项目中引入 Workerman,实现异步任务处理?

    如何在 ThinkPHP 项目中引入 Workerman,实现异步任务处理?如何在 ThinkPHP 项目中引入 Workerman,实现异步任务处理?如何在 ThinkPHP 项目中引入 Workerman,实现异步任务处理?如何在 ThinkPHP 项目中引入 Workerman,实现异步任务处理?

    在 thinkphp 项目中引入 workerman 可以实现异步任务处理。具体步骤包括:1. 将 workerman 文件放置在项目 vendor 目录下并引入;2. 创建 worker 实例并设置定时器执行异步任务;3. 使用任务队列(如 splqueue 或 redis)管理和处理任务;4. …

    2026年10月18日 • 用户投稿
    000
  • 重装系统电脑里除了C盘其他东西会不会丢失

    重装系统电脑里除了C盘其他东西会不会丢失重装系统电脑里除了C盘其他东西会不会丢失重装系统电脑里除了C盘其他东西会不会丢失重装系统电脑里除了C盘其他东西会不会丢失

    在电脑使用过程中,重装系统是一项常见操作,但不少用户担心在重装过程中除C盘外的文件是否会受到影响。本文将介绍重装系统时需要准备的工具、应对方法以及相关注意事项,帮助大家安全完成系统重装。 一、所需工具: 进行系统重装前,首先需要一个稳定的系统安装U盘或光盘,用于引导安装操作系统。其次,建议准备一个外…

    2026年10月18日 • 用户投稿
    000

发表回复

登录后才能评论
关注微信