MySQL 慢查询日志slow query log - 指南

news/2025/11/1 18:33:02/文章来源:https://www.cnblogs.com/gccbuaa/p/19183702

MySQL 的慢查询日志(slow query log)是用于记录执行时间超过指定阈值的 SQL 语句的日志,主要用于性能分析和优化。以下是关于慢查询日志的详细介绍和操作指南:

登录 MySQL 后,执行以下命令查看慢查询相关参数:

show variables like '%slow_query%';
show variables like 'long_query_time';

关键参数说明:
slow_query_log:是否开启慢查询日志(ON为开启,OFF为关闭)。
slow_query_log_file:慢查询日志文件路径(如/var/lib/mysql/hostname-slow.log)。
long_query_time:慢查询阈值(单位:秒),执行时间超过此值的 SQL 会被记录(默认 10 秒,可精确到小数,如 0.5 秒)。
log_queries_not_using_indexes:是否记录未使用索引的查询(ON开启,即使执行时间未达阈值也会记录)。

  1. 临时开启 / 修改配置(无需重启 MySQL)
    适合临时调试,MySQL 重启后会失效:
    sql
    – 开启慢查询日志
set global slow_query_log = ON;

– 设置日志文件路径(需确保MySQL有权限写入)

set global slow_query_log_file = '/var/log/mysql/slow.log';

– 设置慢查询阈值(如1秒,支持小数)

set global long_query_time = 1;

– 记录未使用索引的查询(慎用,可能产生大量日志)

set global log_queries_not_using_indexes = ON;
| slow_query_log_file | /data/3307/data/oracle-slow.log
  1. 永久配置(推荐)
    修改 MySQL 配置文件(my.cnf或my.ini),重启服务后生效:
[mysqld]
开启慢查询日志
slow_query_log = 1
日志文件路径
slow_query_log_file = /data/3307/data/slow.log
#慢查询阈值(0.1秒)
long_query_time = 0.1
记录未使用索引的查询(可选)
log_queries_not_using_indexes = 1
#记录管理语句(如ALTER TABLE,可选)
log_slow_admin_statements = 1
mysql> show variables like 'long_query_time';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |    10+-----------------+-----------+
[root@oracle 3307]# cat my.cnf 
[mysqld]
user=mysql
basedir=/application/mysql
datadir=/data/3307/data
socket=/data/3307/mysql.sock
log_error=/data/3307/mysql.log
port=3307
gtid_mode=ON
enforce_gtid_consistency=ON
autocommit=0
server_id=7
log_bin=/data/3307/mysql-bin
binlog_format=row
slow_query_log = 1
slow_query_log_file = /data/3307/data/slow.log
long_query_time = 0.1
log_queries_not_using_indexes = 1

重启数据库

[root@oracle 3307]# systemctl restart mysqld3307.service

使用t100w表做些慢查询的数据

mysql> select *  from t100w where  k1='aa' limit 100;
……
| 396221 | 994690 | aa   | ab89 | 2019-07-09 16:08:12 |
+--------+--------+------+------+---------------------+
100 rows in set (0.50 sec)

0.5秒

只有k2有索引

mysql> select *  from t100w where  k1='lm' limit 600;

多执行做一些数据

查看慢日志文件

[root@oracle data]# vim slow.log 

在这里插入图片描述
通过分析慢语句去优化查询

三、慢查询日志的分析

  1. 直接查看日志内容
    慢查询日志的每条记录包含以下关键信息:
    执行时间(Time)
    执行时长(Query_time,单位秒)
    锁定时间(Lock_time)
    扫描行数(Rows_examined)
    影响行数(Rows_sent)
    具体 SQL 语句
    示例片段:
    plaintext
    #Time: 2023-10-01T12:34:56.789000Z
    #User@Host: root[root] @ localhost [] Id: 123
    Query_time: 2.500000 Lock_time: 0.000100 Rows_sent: 100 Rows_examined: 10000
    use testdb;
    SET timestamp=1696154096;
    SELECT * FROM users WHERE age > 30; – 未使用索引,扫描10000行
  2. 使用专用工具分析
    mysqldumpslow(MySQL 自带):
    汇总慢查询日志,按执行次数、时间等排序:
    bash
    查看使用最频繁的10条慢查询
mysqldumpslow -s c -t 10 /var/log/mysql/slow.log

查看执行时间最长的10条慢查询

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

参数说明:-s c(按次数)、-s t(按时间)、-t 10(显示前 10 条)。

[root@oracle data]# mysqldumpslow -s c -t 10  slow.log 
Reading mysql slow query log from slow.log
Count: 10  Time=0.72s (7s)  Lock=0.00s (0s)  Rows=233.7 (2337), root[root]@localhost
select *  from t100w where  k1='S' limit N
简化成一类语句,进行执行计划分析,是否走索引,然后优化
Count: 1  Time=0.00s (0s)  Lock=0.00s (0s)  Rows=600.0 (600), root[root]@localhost
select *  from t100w where  id>N limit N
Count: 1  Time=0.00s (0s)  Lock=0.01s (0s)  Rows=600.0 (600), root[root]@localhost
select *  from t100w where  id!=N limit N
Died at /application/mysql/bin/mysqldumpslow line 161, <> chunk 12.
[root@oracle data]# 

pt-query-digest(Percona Toolkit 工具):

更强大的分析工具,支持按 SQL 模板分组、计算平均耗时等:
bash

pt-query-digest /var/log/mysql/slow.log

pt-query-digest(Percona Toolkit 工具):安装

安装 pt-query-digest 工具可以通过以下步骤完成:

下载工具:从 Percona 官方网站获取工具包。

https://www.percona.com/downloads
wget https://downloads.percona.com/downloads/percona-toolkit/3.5.0/binary/tarball/percona-toolkit-3.5.0_x86_64.tar.gz

解压安装:

tar -zxvf percona-toolkit-3.5.0_x86_64.tar.gz
cd percona-toolkit-3.5.0
perl Makefile.PL PREFIX=/usr/local/percona-toolkit

报错如下:

Can’t locate ExtUtils/MakeMaker.pm in @INC (@INC contains: /usr/local/lib/perl5 /usr/local/share/perl5 /usr/lib/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib/perl5 /usr/share/perl5 .) at Makefile.PL line 2.
BEGIN failed–compilation aborted at Makefile.PL line 2.
步骤6. 使用以下命令解决。

yum install perl-ExtUtils-MakeMaker

然后继续执行上面语句

perl Makefile.PL PREFIX=/usr/local/percona-toolkit
make && make install

控制台输出如下,则编译安装成功。
在这里插入图片描述
安装依赖:确保安装了 Perl 模块,如 perl-DBD-MySQL 和 perl-Digest-MD5。

yum install perl-DBD-MySQL perl-Digest-MD5

学习跟使用Percona Toolkit 工具 的使用方法
华为云社区开发者博客:
使用 pt-query-digest 工具分析 MySQL 慢日志
https://bbs.huaweicloud.com/blogs/432109

进入到安装路径下面

[root@oracle bin]# ./pt-query-digest   /data/3307/data/slow.log   >  /data/3307/data/A.txt

在这里插入图片描述
修改环境变量

[root@oracle data]# vim /etc/profile

添加pt工具的安装路径

export PATH=$PATH:/application/mysql/bin:/server/tools/percona-toolkit-3.5.0/bin

使之生效

[root@oracle data]# source /etc/profile

更多工具使用方法自己进行知识扩充

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/952942.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025 年 11 月离心喷雾干燥机,振动流化床干燥机,带式干燥机厂家最新推荐,品牌深度解析采购无忧之选!

近期,行业权威协会针对离心喷雾干燥机、振动流化床干燥机、带式干燥机领域开展专项测评,通过对设备性能参数、生产企业技术实力、市场用户反馈等多维度数据采集分析,最终形成本次推荐榜单。测评过程中,不仅对设备的…

unity技巧备忘

在编辑器,检视面板 中执行代码 using UnityEngine; public class HighScore : MonoBehaviour { public bool resetHighScoreNow = false;private void OnDrawGizmos(){if (resetHighScoreNow){resetHighScoreNow …

前端开发技术栈

目录Nodejs参考资料 Nodejs 工具链: Node.js 是前端开发工具链的重要组成部分,例如用于构建工具、包管理器(如 npm)等,这些工具可以在本地开发环境中运行。 非直接开发: 虽然 Node.js 本身不直接属于前端,但它通…

SOA、ESB、微服务、分布式概念及专业名词阐述

SOA、ESB、微服务概念1 SOA 面向服务 SOA全称:Service Oriented Architecture,面向服务框架。它是一种设计理念,其中包含多个服务,服务之间通过相互依赖最终提供一系列完成的功能。各个服务通常以独立的形式部署运…

unity技巧

在编辑器,检视面板 中执行代码 using UnityEngine; public class HighScore : MonoBehaviour { public bool resetHighScoreNow = false;private void OnDrawGizmos(){if (resetHighScoreNow){resetHighScoreNow …

项目2:图书管理系统(数据库入门)

核心功能:添加图书(书名、作者、ISBN、出版年份) 搜索图书(按书名、作者) 更新图书信息 删除图书 获取图书统计(总数、按作者分组)技术栈:SQLModel数据库集成 基础查询和过滤 简单数据统计 错误处理挑战点:数…

CF2153B Bitwise Reversion | 数学 | 模拟

CF2153B Bitwise Reversion | 数学 | 模拟 题目描述 给定三个非负整数 \(x\),\(y\) 和 \(z\),判断是否存在三个非负整数 \(a\)、\(b\)、\(c\),满足以下三个条件:\(a \mathbin{\&} b = x\) \(b \mathbin{\&…

DRL-QLearning与DQN

强化学习领域中,Q-learning和深度Q网络(DQN)是两个具有里程碑意义的算法。Q-learning奠定了传统强化学习的基础,而DQN则开启了深度强化学习的新时代。本文将深入探讨这两种算法的核心概念和工作原理,帮助读者理解它…

2025 年 11 月真空耙式干燥机,高效沸腾干燥机,盘式干燥机厂家最新推荐,高性能,稳定性强的行业优选

近期,行业设备性能评估协会联合稳定性测试机构,针对真空耙式干燥机、高效沸腾干燥机、盘式干燥机领域,开展 “高性能 - 强稳定” 专项测评。高性能维度设定三项核心标准:干燥效率(比行业平均水平高 15% 以上)、能…

2025 年 11 月盘式干燥机,空心桨叶干燥机,振动流化床干燥机厂家最新推荐,技术实力与市场口碑深度解析

近期,行业技术评估协会联合市场调研机构,针对盘式干燥机、空心桨叶干燥机、振动流化床干燥机领域,开展 “技术实力 - 市场口碑” 双维度专项解析。技术实力测评涵盖三项核心指标:一是研发硬实力(研发团队规模≥15…

2025 年 11 月双锥回转真空干燥机,离心喷雾干燥机,带式干燥机厂家最新推荐,专业制造与品牌保障口碑之选

近期,行业制造标准协会联合品牌评估机构,针对双锥回转真空干燥机、离心喷雾干燥机、带式干燥机领域,开展 “专业制造 - 品牌保障” 双核心测评。专业制造维度从三方面评估:一是生产工艺专业性(是否采用行业专用生…

DRL-时序差分学习

时序差分(Temporal Difference, TD)学习是强化学习中的一种核心方法,它结合了动态规划和蒙特卡洛方法的优点,实现了无需环境模型的在线学习。本指南将详细介绍TD学习的原理。时序差分学习技术指南 时序差分(Tempo…

再见了ThreadLocal,我决定用ScopedValue!

前言 今天我们来聊聊一个即将改变我们编程习惯的新特性——ScopedValue。 有些小伙伴在工作中,一提到线程内数据传递就想到ThreadLocal,但真正用起来却遇到各种坑:内存泄漏、数据污染、性能问题等等。 其实,Scoped…

查询增强插件pgfincore - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025 年 11 月双锥回转真空干燥机,真空耙式干燥机,盘式干燥机厂家最新推荐,聚焦资质、案例、售后的六家机构深度解读

近期,十家行业权威机构联合开展双锥回转真空干燥机、真空耙式干燥机、盘式干燥机专项测评,通过资质审核、案例验证、售后调研三大核心维度,对近百家厂家进行综合评估。资质审核环节重点核查企业专利数量、体系认证(…

2025 年 11 月高效沸腾干燥机,旋转闪蒸干燥机,空心桨叶干燥机厂家最新推荐,产能、专利、环保三维数据透视

近期,行业协会联合专业测评机构,针对高效沸腾干燥机、旋转闪蒸干燥机、空心桨叶干燥机领域开展专项评估,从产能、专利、环保三大核心维度构建测评体系。产能维度重点核查企业年产能规模、生产线自动化程度及订单交付…

如何把未分配的硬盘空间分配到另一个磁盘?Windows 11,如何将未分配的磁盘分配给 C 盘?怎么把未分配的磁盘合并到d盘

如何把未分配的硬盘空间分配到另一个磁盘?Windows 11,如何将未分配的磁盘分配给 C 盘?怎么把未分配的磁盘合并到d盘 基本上几步就能学会,先来看看,大概的思路就是:如果多余的盘存在,则需要删除这个磁盘券;扩展需…

LLM应用敏感数据防泄露指南:AI安全围栏筑牢企业自研AI应用安全防线

LLM应用敏感数据防泄露指南:AI安全围栏筑牢企业自研AI应用安全防线【适用场景】上线了对外提供服务的AI应用,担心被提示词攻击,AI应用输出违规内容与训练或知识库里的敏感数据,安全投入有限的客户 【方案概要】AI-…

C++中`std::function`和`std::bind`的详细解析

一、核心概念 1. std::function功能:通用函数包装器,可存储任意可调用对象 特点:类型擦除:统一处理函数指针、lambda、成员函数等 运行时有少量性能开销 声明时需要指定函数签名2. std::bind功能:绑定参数生成新可…

k8s-应用部署和组件及常用命令(2)

1、相关组件介绍: node是k8s的集群节点,和实际的机器对应 pod是应用容器,不同的应用部署在不同的pod中,k8s协调资源,将pod部署到集群中的node节点上(非master节点)。 同时pod又是挂在namespace下面的,命名空间…