MySQL慢查询日志分析

article/2025/10/1 6:59:43

(1)慢查询日志

MySQL提供了慢SQL的日志记录功能,我们可以通过设置一些属性来记录系统使用过程中慢查询的执行日志。使用MySQL慢查询日志对有效率问题的SQL进行监控。

查看属性

1】查看MySQL是否开启慢查询日志记录功能
show variables like 'slow_query_log';

在这里插入图片描述

2】查看慢查询SQL记录日志文件位置
show variables like 'slow_query_log_file';

在这里插入图片描述

3】查看超过多少秒的查询记录到慢查询日志中
show variables like 'long_query_time';

在这里插入图片描述

设置属性

1】开启慢查询日志
set global slow_query_log=on;2】设置慢查日志的文件地址
set global slow_query_log_file = 'xxx'3】是否把没有使用sql索引记录到慢查日志中
set global log_queries_not_using_indexes=on;4】设置慢查日志的时间,查寻超过多少秒记录(单位:秒)
set global long_query_time=1; 

示例

查看慢查询SQL记录日志文件位置
show variables like ‘slow_query_log_file’;
使用tail命令观察该文件,执行一个相对较为耗时的查询SQL,观察该文件的变化
在这里插入图片描述
【1】执行SQL的主机信息
【2】SQL的执行信息,查询时间,锁时间,查询返回数量
【3】时间戳信息
【4】查询SQL

(2)慢查询分析工具

查看慢查询SQL记录日志文件位置
show variables like ‘slow_query_log_file’;
通过观察慢SQL日志文件可以定位详细的慢SQL信息,但更多的时候使用这样的方式不是很明朗,对此,可以通过一些分析工具帮助我们更清晰也更简单的去分析观察这些日志信息

mysqldumpslow工具

该工具是慢查询自带的分析慢查询工具,一般只要安装了mysql,就会有该工具;
在这里插入图片描述
常见用法:
【1】查询执行次数最多的10条慢查询

mysqldumpslow -s c -t 10  /var/lib/mysql/4cc40e50ab3c-slow.log

在这里插入图片描述
上面是根据累计执行次数倒序排列的

【2】取出查询时间最慢的3条慢查询

mysqldumpslow -s t -t 3   /var/lib/mysql/4cc40e50ab3c-slow.log

在这里插入图片描述

pt-query-digest工具

pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog、General log、slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdump抓取的MySQL协议数据来进行分析。可以把分析结果输出到文件中,分析过程是先对查询语句的条件进行参数化,然后对参数化以后的查询进行分组统计,统计出各查询的执行时间、次数、占比等,可以借助分析结果找出问题进行优化。

【安装】

部署 Percona Toolkitwget https://www.percona.com/downloads/percona-toolkit/3.2.1/binary/redhat/7/x86_64/percona-toolkit-3.2.1-1.el7.x86_64.rpmPT 工具是使用 Perl 语言编写和执行的,所以需要系统中有 Perl 环境。安装相关的依赖包,[root@xxx ~]# yum install perl-DBI.x86_64
[root@xxx ~]# yum install perl-DBD-MySQL.x86_64
[root@xxx ~]# yum install perl-IO-Socket-SSL.noarch
[root@xxx ~]# yum install perl-Digest-MD5.x86_64
[root@xxx ~]# yum install perl-TermReadKey.x86_64安装 Percona Toolkit[root@xxx ~]# rpm -iv percona-toolkit-3.2.1-1.el7.x86_64.rpm上述操作完成之后,执行
pt-query-digest --help如果可以看到下面帮助信息表示安装完成

在这里插入图片描述
【语法及重要选项】

pt-query-digest [OPTIONS] [FILES] [DSN]--create-review-table  当使用--review参数把分析结果输出到表中时,如果没有表就自动创建。
--create-history-table  当使用--history参数把分析结果输出到表中时,如果没有表就自动创建。
--filter  对输入的慢查询按指定的字符串进行匹配过滤后再进行分析
--limit限制输出结果百分比或数量,默认值是20,即将最慢的20条语句输出,如果是50%则按总响应时间占比从大到小排序,输出到总和达到50%位置截止。
--host  mysql服务器地址
--user  mysql用户名
--password  mysql用户密码
--history 将分析结果保存到表中,分析结果比较详细,下次再使用--history时,如果存在相同的语句,且查询所在的时间区间和历史表中的不同,则会记录到数据表中,可以通过查询同一CHECKSUM来比较某类型查询的历史变化。
--review 将分析结果保存到表中,这个分析只是对查询条件进行参数化,一个类型的查询一条记录,比较简单。当下次使用--review时,如果存在相同的语句分析,就不会记录到数据表中。
--output 分析结果输出类型,值可以是report(标准分析报告)slowlog(Mysql slow log)、json、json-anon,一般使用report,以便于阅读。
--since 从什么时间开始分析,值为字符串,可以是指定的某个”yyyy-mm-dd [hh:mm:ss]”格式的时间点,也可以是简单的一个时间值:s()h(小时)m(分钟)d(),如12h就表示从12小时前开始统计。
--until 截止时间,配合—since可以分析一段时间内的慢查询。

【常用示例】

1:查看最慢的查询日志信息,限制100[root@VM-8-17-centos ~]#  pt-query-digest  --limit 100  /var/lib/mysql/VM-8-17-centos-slow.log2:分析最近12小时内的查询[root@VM-8-17-centos ~]#  pt-query-digest   --since=12h  /var/lib/mysql/VM-8-17-centos-slow.log3:分析只含有select语句的慢查询pt-query-digest --filter '$event->{fingerprint} =~ m/^select/i'  /var/lib/mysql/VM-8-17-centos-slow.log

(3)如何通过慢查询日志发现有问题的SQL

1.查询次数多且每次查询占用时间长的SQL
通常为pt-query-digest分析的前几个查询
2.IO大的SQL
注意pt-query-digest分析中的Rows examine项
3.未命中索引的SQL
注意pt-query-digest分析中的Rows examine和Row send 的对比
当Rows examine数据库引擎扫描行数大于Row send数据发送结果行数 基本上是使用了索引扫描或者表扫描的方式来进行查询,需要进行优化


http://chatgpt.dhexx.cn/article/iEwRIsGQ.shtml

相关文章

MySQL优化之慢日志查询

目录 一、慢查询日志(slow_query_log)概念二、慢查询日志实践1. 打开慢查询日志开关2. 设置合理的、业务可以接受的慢查询时间上限long_query_time3. 压测执行各种业务4. 查看慢查询日志5. 用explain分析这些耗时的sql语句,从而针对性优化 三、show profiles查看sql…

MySQL日志(一)—— 慢查询日志slow log

一、慢查询日志(slow log) 慢查询日志,就是查询超过一定的时间没有返回结果的时候,MySQL会将执行的SQL记录到日志中,这个日志,就称为慢查询日志。通过分析慢查询日志,可以快速找出执行慢的SQL语…

【OpenCv3】 VS C++ (五):SLIC超像素分割算法

下一节地址:https://blog.csdn.net/qq_40515692/article/details/102788157 OpenCv专栏:https://blog.csdn.net/qq_40515692/article/details/102885061 超像素(SuperPixel),就是把原本多个像素点,组合成一…

superpixels(超像素)

superpixels(超像素) 1.理解: 超像素不是在普通的像素基础上继续微观细分,超像素是一系列像素的集合,这些像素具有类似的颜色、纹理等特征,距离也比较近。其中超像素比较常用的一种方法是SLIC Semantic Segmentatio…

Seeds超像素分割

#%% SEED超像素分割 import cv2 import numpy as np import imageio # print(dir(cv2.ximgproc))img imageio.imread(rE:\Vaihingen\data\orginalimages\top_mosaic_09cm_area31.tif)[:,:,::-1] converted_img cv2.cvtColor(img, cv2.COLOR_BGR2HSV)# print(type(img_feature…

Python实现超像素分割

目录 一、什么是超像素?二、超像素具有哪些特点?三、Simple Linear Iterative Clustering (SLIC)算法实现步骤四、SLIC算法代码实现五、效果展示和分析六、基于超像素的边缘检测代码七、基于超像素的边缘检测效果展示与分析八、思维扩展参考资料注意事项…

基于Matlab的SLIC超像素分割算法分析

SLIC超像素分割算法分析 1:导入原始照片,初始化聚类中心,按照设定的超像素个数,在图像内均匀的分配聚类中心。假设图片总共有 N 个像素点,预分割为 s 个相同尺寸的超像素,那么每个超像素的大小为N/ s &…

超像素分割算法————综述

参考:超像素—学习笔记 什么是超像素?评价标准?SLIC、SEED、ETPS算法 比较的指标:图像边界的粘附性、算法速度、存储效率、分割性能 超像素算法:将像素组合成感知有意义的原子区域( atomic regions),其可…

超像素分割 SLIC算法 使用示例

参考博客 介绍超像素分割 & SLIC算法 SLIC超像素分割详解(一):简介_计算机视觉life的博客-CSDN博客_slic超像素分割 机器学习:simple linear iterative clustering (SLIC) 算法_Matrix_11的博客-CSDN博客_简单线性迭代聚类…

图像处理: 超像素(superpixels)分割 SLIC算法

原理 超像素概念是2003年Xiaofeng Ren提出和发展起来的图像分割技术,是指具有相似纹理、颜色、亮度等特征的相邻像素构成的有一定视觉意义的不规则像素块。它利用像素之间特征的相似性将像素分组,用少量的超像素代替大量的像素来表达图片特征,很大程度上降低了图像…

超像素SLIC算法源码阅读

超像素SLIC算法源码阅读 超像素SLIC算法源码阅读SLIC简介源码阅读实验结果其他超像素算法对比 超像素SLIC算法源码阅读 SLIC简介 SLIC的全称Simple Linear Iterative Clustering,即简单线性迭代聚类,论文和代码链接如下: 论文传送门&#x…

python 超像素分割

SILC算法超像素分割(源码实现) 主体代码来自github.com/laixintao/slic-python-implementation 原代码中只有分割之后的小方块 即1.png 没有明显边界 没有继续进行图像分割 源码修改: 1.向Cluster类添加了label属性,以便于标记…

超像素分割学习笔记

学习目标 掌握超像素分割的原理、超像素分割方法的推导过程以及实现方法 1.1 超像素 超像素是指将具有相似纹理、颜色、亮度等特征的相邻像素聚合成某一个像素块,结合超像素的思想,这样可以使少量的像素块代替原本大量的像素。 目前超像素广泛应用于图…

SLIC超像素算法

原文出自:https://blog.csdn.net/Fighting_Dreamer/article/details/77170859 SLIC与目前最优超像素算法的比较 Radhakrishna Achanta, Appu Shaji, Kevin Smith, Aurelien Lucchi, Pascal Fua, and Sabine Susstrunk 摘要 近年来,计算机视觉应用越来…

超像素池化全监督语义分割

Efficient semantic image segmentation with superpixel pooling 摘要 在这项工作中,我们评估了超像素池化层在深层网络结构中用于语义分割的应用。超像素池化是一种灵活有效的方法,可以替代其他包含空z间先验信息的池策略。我们提出了一个简单而高效…

SLIC超像素分割算法

SLIC超像素分割算法 《SLIC Superpixels》 摘要 超像素在计算机视觉应用中越来越受欢迎。然而,很少有算法能够输出所需数量的规则、紧凑的超级像素,并且计算开销低。我们介绍了一种新的算法,将像素聚类在组合的五维颜色和图像平面空间中&a…

matlab 超像素合并,超像素区域合并

应广大学术同行的请求,将以往研究的一些代码进行整理,特发布一个学术版本的小软件工具:SuperpixelMerge, 基本功能:实现超像素的区域合并 参数说明:共7个参数,分别为图像路径、超像素分割标记图像路径、输出结果路径、合并准则、合并后区域个数、形状参数、紧凑度参数。详…

超像素—学习笔记

文章目录 概念超像素判别条件超像素初始化的方法超像素算法SLIC算法 参考资料 概念 超像素由一系列位置相邻且颜色、亮度、纹理等特征相似的像素点组成的小区域。这些小区域大多保留了进一步进行图像分割的有效信息,且一般不会破坏图像中物体的边界信息。 超像素是…

超像素采样网络(英伟达)

Superpixel Sampling Networks 摘要 超像素为图像数据提供了一种高效的低/中层次的表示,大大减少了后续视觉任务的图像基元数量。现有的超像素算法是不可微的,这使得它们很难集成到其他端到端可训练的深度神经网络中。我们开发了一种新的超像素采样可微…

超像素、语义分割、实例分割、全景分割

图像分割(Image segmentation)就是根据某些规则把图像中的像素分成不同的部分(打上不同的标签)。 1. 超像素(superpixels) 超像素并不是在普通的像素基础上继续像微观细分,恰恰相反的是&#…