【MySQL | 第八篇】在MySQL中,如何定位慢查询以及对应解决方法?

在这里插入图片描述

文章目录

  • 8.在MySQL中,如何定位慢查询以及对应解决方法?
    • 8.1MySQL慢查询日志
      • 8.1.1开启慢查询
        • (1)修改配置文件
        • (2)设置全局变量
      • 8.1.2日志记录在表上(实践)
      • 8.1.3日志记录在文件上(实践)
        • (1)mysqldumpslow
    • 8.2深度分析慢SQL
      • 8.2.1问题
      • 8.2.2步骤一:分析SQL执行计划
      • 8.2.3索引优化

8.在MySQL中,如何定位慢查询以及对应解决方法?

  • 三种方法定位慢查询
    • Skywalking工具:实时监控接口性能,一眼锁定“拖油瓶”。报表详列各接口及内部组件耗时,尤其关注SQL执行时间,迅速圈定问题SQL;
    • MySQL内置慢查询日志;

8.1MySQL慢查询日志

  • 慢查询日志是 MySQL 内置的一项功能,可以记录执行超过指定时间的 SQL 语句

  • 以下是慢查询的相关参数,大家感兴趣的可以看下:

    参数含义
    log_output日志输出位置,默认为 FILE,即保存为文件,若设置为 TABLE,则将日志记录到 mysql.show_log 表中,支持设置多种格式
    slow_query_log_file指定慢查询日志文件的路径和名字,可使用绝对路径指定,默认值是主机名-slow.log,位于配置的 datadir 目录
    long_query_time执行时间超过该值才记录到慢查询日志,单位为秒,默认为 10
    min_examined_row_limit对于查询扫描行数小于此参数的SQL,将不会记录到慢查询日志中,默认为 0
    log_queries_not_using_indexes是否将未使用索引的 SQL 记录到慢查询日志中,开启此配置后会无视 long_query_time 参数,默认为 OFF
    log_throttle_queries_not_using_indexes设定每分钟记录到日志的未使用索引的语句数目,超过这个数目后只记录语句数量和花费的总时间,默认为 0
    log-slow-admin-statements记录执行缓慢的管理 SQL,如 ALTER TABLE、ANALYZE TABLE、CHECK TABLE、CREATE INDEX、DROP INDEX、OPTIMIZE TABLE 和 REPAIR TABLE,默认为 OFF
    log_slow_slave_statements记录从库上执行的慢查询语句,如果 binlog 的值为 row,则失效,默认为 OFF

8.1.1开启慢查询

有两种方式可以开启慢查询

  1. 修改配置文件
  2. 设置全局变量
(1)修改配置文件
  • 修改配置文件 my.ini,在[mysqld]段落中加入如下参数:

    [mysqld]
    log_output='FILE,TABLE'
    slow_query_log='ON'
    long_query_time=0.001
    
  • 然后需要重启 MySQL 才可以生效,命令为 service mysqld restart(永远生效)

(2)设置全局变量
  • 无需重启即可生效,但是重启会导致设置失效,设置的命令如下所示:
SET GLOBAL slow_query_log = 'ON';
SET GLOBAL log_output = 'FILE,TABLE';
SET GLOBAL long_query_time = 0.001;

8.1.2日志记录在表上(实践)

  • 通过第二种方式:设置全局变量开启慢查询;
  • 使用全表查询语句:SELECT * FROM user;
  • 然后再查询慢查询日志:SELECT * FROM mysql.slow_log,可以发现其中有这样一条记录:

image-20240429214131920

  • 这样我们就可以通过 slow_log 表的数据进行分析,然后对 SQL 进行调优了。

8.1.3日志记录在文件上(实践)

  • 若将日志记录在文件上,使用 SHOW VARIABLES LIKE '%slow_query_log_file%' 来查看文件保存位置;
  • 可以看出每五行表示一个慢 SQL,这样查看比较费事,可以使用一些工具来查看。

image-20240429215409003

(1)mysqldumpslow

MySQL 内置了 mysqldumpslow 这个工具来帮助我们分析慢查询日志文件,Windows 环境下使用该工具需要安装 Perl 环境

可以通过 -help 来查看它的命令参数:

mysqldumpslow help

img

比如我们可以通过 mysqldumpslow -s t 10 LAPTOP-8817LKVE-slow.log 命令得到按照查询时间排序的 10 条 SQL 。

img

8.2深度分析慢SQL

8.2.1问题

定位到慢SQL后,如何进行深度分析?

8.2.2步骤一:分析SQL执行计划

  • 使用explain命令分析SQL执行计划:
    • Key & Key_len确认索引是否生效。若已建索引未被充分利用,可能存在失效问题。
    • Type扫视查询类型,警惕全表扫描(All/Full Scan)等低效访问模式,寻找优化突破口。
    • rows:预计需要扫描的记录数,预计需要扫描的记录数越小越好
    • Extra留意MySQL给出的执行建议,如“Using filesort”、“Using temporary”等,提示可能存在的额外排序、临时表操作,影响性能。

8.2.3索引优化

  • 针对上述分析结果:
    • 修复失效索引:添加缺失索引,调整或重建现有索引。
    • 解决回表查询问题:若发现回表现象,尝试增加覆盖索引(一次查询,就查到了全部需要的数据,避免 SELECT *)或减少SELECT字段,减轻IO压力。

在这里插入图片描述

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

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

相关文章

大数据开发工作中的数仓设计(Hadoop,hive ,mysql )

1.HUE工具介绍使用 HUE是CDH提供一个hive和hdfs的操作工具,在hue中编写了hiveSQl也可以操作hdfs的文件 http://主机名字:端口号 hdfs的web访问端口 http://主机名字:端口号 hdfs的程序访问端口 进入后确保hdfs hive yarn 开启 在点击hue开启 在这里面也可以进行h…

Xinlinx FPGA如何降低Block RAM的功耗

FPGA中降低Block RAM的功耗有两种方式,分别是选择合适的写操作模式以及Block RAM的实现算法及综合设置。我们知道对于采用IP核生成对应的RAM时,会有最小面积算法、低功耗算法以及固定原语,但是采用最小功耗算法有时由于级联长度导致无法实现&…

币圈Cryptosquare论坛

Cryptosquare综合性资讯论坛汇集了币圈新闻、空投信息、社会热点以及与Web3相关的工作信息。让我们一起解锁加密世界的种种可能性,探索Cryptosquare论坛带来的精彩! 币圈新闻板块: Cryptosquare论坛的币圈新闻板块是用户获取最新加密货币行业…

Elasticsearch中【文档查询】DSL语句以及对应的Java实现

目录 全文检索查询 精准查询 布尔查询 排序、分页查询 高亮 地理查询 复合查询 Elasticsearch提供了基于JSON的DSL(Domain Specific Language)来定义查询。常见的查询类型包括: 查询所有:查询出所有数据,一般测…

全新突破:「Paraverse平行云」实现3D/XR企业级应用全面接入Apple Vision Pro

在前不久举行的GTC开发者大会上,英伟达引领行业风向,宣布其Omniverse平台能够助力企业将3D/XR应用流畅传输至Apple Vision Pro混合现实头显。在英伟达与苹果这两大科技巨头的合作下,此举标志着3D/XR技术迈向新纪元的关键一步。「Paraverse平行云」实时云…

《HCIP-openEuler实验指导手册》1.6 Apache静态资源配置

知识点 常用用途: 软件仓库镜像及提供下载服务: 配置步骤 删除网站主目录中的文件(本实验机目录为/home/source ip为192.168.12.137 端口为81) cd /home/source rm -rf *在主目录中新建6个文件夹如下图 mkdir test{1..6}新建…

将本地.mp4推流成rtsp流?(windows)

概述 如何在本地机器上进行rtsp推流整个操作? 1.软件安装 1. 推流-ffmpeg下载 从官网下载windows版本,该版本已经编译好了 放到C:下找一个目录解压,我放到C:\ffmpeg-7.0-essentials_build\进入系统环境变量设置:将…

使用nodejs和python脚本实现爬虫程序,并将抓取数据生成词云图看板

创建项目,初始化目录结构。 创建项目名称为pachong。运行 npm init -y 初始化项目。修改package.json文件中的type属性为module。安装 npm 包:npm install puppeteer #爬虫 | 自动化UI测试首先确保你的电脑上有python3环境安装两个python包 pip instal…

c#数据库: 8.在窗体上显示学生信息

以上一章学生信息表为例,首先将查询的学生信息存储到数据集中,然后将数据集与数据显示控件绑定,从而实现学生信息在窗体上的显示 (1)创建一个名为StudentGridView的窗体应用程序,为窗体添加一个DataGridVi…

Stable Diffusion 模型分享:Counterfeit-V3.0(动漫)

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八 下载地址 模型介绍 高质量动漫风格模型。 条目内容类型大模型基础模…

Java进阶-JINQ详解与使用

本文详细介绍了JINQ(Java Integrated Query),一种强化Java中数据查询能力的库,提供类SQL的查询语法和类型安全的操作。文章首先解释了JINQ的基本功能和应用,随后通过具体示例展示了如何使用JINQ进行数据过滤、投影、连…

Unity镂空图像做法

问题和解决方案 现在要完成一个需求,即镂空中间部分的image,外围image可以定义颜色并可选屏蔽点击,而中间的image需要透明且可以穿透,必须不能屏蔽点击。 由此拆分成了两个问题: 1.定义外围image颜色,内…

Facebook的语言学:社交媒体如何影响我们的沟通方式

1. 引言 社交媒体已经成为人们日常生活中不可或缺的一部分,而Facebook作为其中最具影响力的平台之一,不仅改变了人们之间的社交方式,也对我们的语言学产生了深远的影响。本文将深入探讨Facebook的语言学特点,以及它如何塑造和改变…

Spring6 当中 获取 Bean 的四种方式

1. Spring6 当中 获取 Bean 的四种方式 文章目录 1. Spring6 当中 获取 Bean 的四种方式每博一文案1.1 第一种方式:通过构造方法获取 Bean1.2 第二种方式:通过简单工厂模式获取 Bean1.3 第三种方式:通过 factory-bean 属性获取 Bean1.4 第四种…

【保姆级教程】用IDEA2023版本给RuoYi-Vue添加子模块

文章目录 前言添加子模块新建子模块新建子模块界面?新建子模块界面! 修改pom依赖配置RuoYiApplication添加测试接口配置接口权限测试 前言 若依前后端分离框架能够极大方便当前开发任务,并且使用的技术栈也相当丰富,但是目前只提…

Docker 中安装单体架构 Redis 的 Shell 脚本

该脚本用于实现 root 用户在 Linux 操作系统下的 Docker 中安装单体架构 Redis Shell 脚本 Git 仓库地址 Gitee:https://gitee.com/tongchaowei/common-shell/tree/main/root 执行脚本 bash ./docker-redis-install-single.sh需要注意的 该脚本会先检查是否安…

数学建模--图论最短路径基础

1.图的定义 学过数据结构或者离散数学的小伙伴们应该知道图的概念,我在这里简单的介绍一下: 图的概念和我们理解的是很不一样的,这里的图并不是我们的生活里面的图片,而是一种表示不同的数据之间的关系,例如这里的5个…

C++中auto关键字的用法详解

1.简介 auto作为一个C语言就存在的关键字,在C语言和C之间却有很大区别。 在C语言中auto修饰的变量,是具有自动存储器的局部变量,但因为局部变量默认类别默认是auto修饰导致一直没有人去使用它。 C11中,标准委员会赋予了auto全新…

XY_RE复现(二)

一,何须相思煮余年 0x55 0x8b 0xec 0x81 0xec 0xa8 0x0 0x0 0x0 0xa1 0x0 0x40 0x41 0x0 0x33 0xc5 0x89 0x45 0xfc 0x68 0x9c 0x0 0x0 0x0 0x6a 0x0 0x8d 0x85 0x60 0xff 0xff 0xff 0x50 0xe8 0x7a 0xc 0x0 0x0 0x83 0xc4…

【智能算法】火烈鸟搜索算法(FSA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2021年,W Zhiheng等人受到火烈鸟迁徙觅食行为启发,提出了火烈鸟搜索算法(Flamingo Search Algorithm, FSA)。 2.算法原理 2.1算法思想 FSA受到火烈鸟…