MySQL优化之慢日志查询

article/2025/10/1 7:29:29

目录

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

一、慢查询日志(slow_query_log)概念

在这里插入图片描述
对于SQL和索引的优化问题,我们会使用explain去分析SQL语句。但是真正的企业级项目有成千上万条SQL,我们不可能从头开始一条一条explain去分析。我们从什么地方可以获取那些运行时间长,耗性能的SQL??

当我们去分析项目所涉及的业务的sql效率的时候,应该打开慢查询日志,根据具体的业务、具体的并发量,来预估一个时间上限,整个查询是不能超过这个上限的,设置好后开启业务,压测过程中我们会发现如果哪些sql的查询超过我们预测的时间,那么这些sql都会被记录在慢查询日志当中,然后使用explain分析这些耗时的语句,判断为什么效率低下。就可以知道索引有没有用,或者是没有建索引需要加索引(主键、unique还是二级索引),或者是索引使用到了,但是由于表的数据量太大,花费的时间就是很长,那么此时我们可以把表分成多个小表等,再看有没有分组排序,如果有where又有分组排序,要考虑加联合索引。

慢查询日志相关参数:show variables like '%slow_query%';(MySQL定义的很多的全局的开关,都是在全局变量中存储,可以用show/set variables查看或者设置全局变量的值)
在这里插入图片描述
慢查询日志开关默认是关闭的
慢查询日志的路径:默认在/var/lib/mysql/

慢查询日志记录了包含所有执行时间超过参数long_query_time(单位:秒)所设置值的SQL语句的日志,在MySQL上用命令可以查看,如下:
在这里插入图片描述
这个值是可以修改的,如下:
在这里插入图片描述
现在修改成超过1秒的SQL都会被记录在慢查询日志中!可以设置成0.01秒,表示10毫秒。

二、慢查询日志实践

1. 打开慢查询日志开关

在这里插入图片描述
在这里插入图片描述
在打开慢查询日志开关的时候,报错表示slow_query_log是一个global的变量(也有只影响当前session的变量,如:long_query_time 、profiling),修改后会影响所有的session,即影响所有正在访问当前MySQL server的客户端。
在这里插入图片描述
打开慢查询日志开关成功!

2. 设置合理的、业务可以接受的慢查询时间上限long_query_time

在这里插入图片描述
查看另一个session
在这里插入图片描述
发现还是默认的10s,故long_query_time只影响当前session

3. 压测执行各种业务

在这里插入图片描述
已经超过我们设置的long_query_time=0.1s

4. 查看慢查询日志

慢查询日志路径:/var/lib/mysql/
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5. 用explain分析这些耗时的sql语句,从而针对性优化

在这里插入图片描述
原来是做了整表搜索,把主键索引树整个扫了一遍。然后再一看paswd作为过滤条件,应该设置索引,即使设置索引了再查看还是用不到索引,然后又发现因为passwd是字符串格式涉及了类型转换,所以用不到索引,正确的sql应该是下面这条语句。
在这里插入图片描述
再来总结刚开始这个问题
在这里插入图片描述

在这里插入图片描述
接下来可以举例子,比如我在做一个业务的时候用到了where过滤条件外加order by,然后用explain分析后有using filesort,涉及了外部排序,为什么会涉及外部排序呢?因为我们数据和索引都是在磁盘上放着呢,如果没有建立合适的索引的话,我们要做order by只能进行外部排序了,这就比较耗时了,然后我试着用where的过滤条件和order by排序的字段建立了联合索引。。。

然后再和和前一篇博客所讲的各种各样出问题的索引结合起来回答,比如类型强转、过滤条件用了MySQL的函数都用不到索引,要考虑进去优化等等。参考回答:MySQL索引常见问题

三、show profiles查看sql具体的运行时间

MySQL一般只显示小数点后两位时间
在这里插入图片描述
打开profiling开关,可以显示更详细的时间
在这里插入图片描述
没有报错,说明profiling变量只影响当前session
在这里插入图片描述


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

相关文章

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) 超像素并不是在普通的像素基础上继续像微观细分,恰恰相反的是&#…

超像素

《超像素》   超像素是一种以聚类思想为初衷的方法,目的是为了对较大像素的图像进行区域划分,来帮助理解,本文介绍了一个开源项目在火灾检测场景使用超像素,比较巧妙,虽然效果不是很理想,但是提供了一个…