mysql慢sql排查与分析
当MySQL遇到慢查询(慢SQL)时,我们可以通过以下步骤进行排查和优化:
标题开启慢查询日志:
确保MySQL的慢查询日志已经开启。通过查看slow_query_log和slow_query_log_file变量来确认。

如果没有开启,可以在MySQL配置文件(如my.cnf(linux)或my.ini(windows))中设置这些变量,然后重启MySQL服务。

# 开启慢查询日志
slow_query_log = ON
# 设置慢查询的时间阈值,单位秒,查询耗时超过此值的SQL会被记录
long_query_time = 1
# 设置log位置
slow_query_log_file = D:/ai-softwares/mysql/mysql-8.0.32-winx64/data/DESKTOP-6IQ27F1-slow.log
# (可选)记录那些没有使用索引的查询
log_queries_not_using_indexes = 1
保存,重启后,可以看到:

查询几条数据后,查看慢日志文件内容:
D:\ai-softwares\mysql\mysql-8.0.32-winx64\bin\mysqld, Version: 8.0.32 (MySQL Community Server - GPL). started with:
TCP Port: 3306, Named Pipe: MySQL
Time Id Command Argument
# Time: 2024-04-05T06:33:16.321295Z
# User@Host: root[root] @ localhost [::1] Id: 8
# Query_time: 0.005313 Lock_time: 0.000010 Rows_sent: 100 Rows_examined: 100
use atguigudb1;
SET timestamp=1712298796;
select * from course;
# Time: 2024-04-05T06:33:39.469804Z
# User@Host: root[root] @ localhost [::1] Id: 8
# Query_time: 0.037054 Lock_time: 0.000037 Rows_sent: 25 Rows_examined: 25
use atguigudb;
SET timestamp=1712298819;
select * from countries;
# Time: 2024-04-05T06:44:06.818619Z
# User@Host: root[root] @ localhost [::1] Id: 8
# Query_time: 0.000289 Lock_time: 0.000004 Rows_sent: 25 Rows_examined: 25
SET timestamp=1712299446;
select * from countries;
# Time: 2024-04-05T06:44:42.748596Z
# User@Host: root[root] @ localhost [::1] Id: 8
# Query_time: 0.000215 Lock_time: 0.000003 Rows_sent: 25 Rows_examined: 25
SET timestamp=1712299482;
select * from countries;
# Time: 2024-04-05T06:44:52.762931Z
# User@Host: root[root] @ localhost [::1] Id: 8
# Query_time: 0.086578 Lock_time: 0.000010 Rows_sent: 19 Rows_examined: 19
SET timestamp=1712299492;
select * from jobs;
# Time: 2024-04-05T06:44:53.632521Z
# User@Host: root[root] @ localhost [::1] Id: 8
# Query_time: 0.000169 Lock_time: 0.000002 Rows_sent: 19 Rows_examined: 19
SET timestamp=1712299493;
select * from jobs;
# Time: 2024-04-05T06:44:54.245250Z
# User@Host: root[root] @ localhost [::1] Id: 8
# Query_time: 0.000166 Lock_time: 0.000001 Rows_sent: 19 Rows_examined: 19
SET timestamp=1712299494;
select * from jobs;
# Time: 2024-04-05T06:44:54.966701Z
# User@Host: root[root] @ localhost [::1] Id: 8
# Query_time: 0.000171 Lock_time: 0.000002 Rows_sent: 19 Rows_examined: 19
SET timestamp=1712299494;
select * from jobs;
# Time: 2024-04-05T06:44:55.613169Z
# User@Host: root[root] @ localhost [::1] Id: 8
# Query_time: 0.000160 Lock_time: 0.000002 Rows_sent: 19 Rows_examined: 19
SET timestamp=1712299495;
select * from jobs;
分析慢查询日志:
使用mysqldumpslow或其他慢查询日志分析工具来查看和分析慢查询日志中的条目。
查看MySQL安装目录的bin目录下,没有mysqldumpslow.exe文件,有一个mysqldumpslow.pl文件。
在目录该下,cmd运行命令:perl mysqldumpslow.pl --help查看命令帮助。
D:\ai-softwares\mysql\mysql-8.0.32-winx64\bin>perl mysqldumpslow.pl --help
Usage: mysqldumpslow [ OPTS... ] [ LOGS... ]Parse and summarize the MySQL slow query log. Options are--verbose verbose--debug debug--help write this text to standard output-v verbose-d debug-s ORDER what to sort by (al, at, ar, c, l, r, t), 'at' is defaultal: average lock timear: average rows sentat: average query timec: countl: lock timer: rows sentt: query time-r reverse the sort order (largest last instead of first)-t NUM just show the top n queries-a don't abstract all numbers to N and strings to 'S'-n NUM abstract numbers with at least n digits within names-g PATTERN grep: only consider stmts that include this string-h HOSTNAME hostname of db server for *-slow.log filename (can be wildcard),default is '*', i.e. match all-i NAME name of server instance (if using mysql.server startup script)-l don't subtract lock time from total time
比如分析时,指定-s c查询次数次数排序,不用-aN隐藏数字,执行下面命令,分析慢查询日志:
perl "D:\ai-softwares\mysql\mysql-8.0.32-winx64\bin\mysqldumpslow.pl" -s c -a "D:/ai-softwares/mysql/mysql-8.0.32-winx64/data/DESKTOP-6IQ27F1-slow.log"
分析结果如下:
D:\ai-softwares\mysql\mysql-8.0.32-winx64\bin>perl "D:\ai-softwares\mysql\mysql-8.0.32-winx64\bin\mysqldumpslow.pl" -s c -a "D:/ai-softwares/mysql/mysql-8.0.32-winx64/data/DESKTOP-6IQ27F1-slow.log"Reading mysql slow query log from D:/ai-softwares/mysql/mysql-8.0.32-winx64/data/DESKTOP-6IQ27F1-slow.log
Count: 5 Time=0.02s (0s) Lock=0.00s (0s) Rows=19.0 (95), root[root]@localhostselect * from jobsCount: 3 Time=0.01s (0s) Lock=0.00s (0s) Rows=25.0 (75), root[root]@localhostselect * from countriesCount: 1 Time=0.00s (0s) Lock=0.00s (0s) Rows=0.0 (0), 0users@0hostsD:\ai-softwares\mysql\mysql-8.0.32-winx64\bin\mysqld, Version: 8.0.32 (MySQL Community Server - GPL). started with:TCP Port: 3306, Named Pipe: MySQL# Time: 2024-04-05T06:33:16.321295Z# User@Host: root[root] @ localhost [::1] Id: 8# Query_time: 0.005313 Lock_time: 0.000010 Rows_sent: 100 Rows_examined: 100use atguigudb1;SET timestamp=1712298796;select * from course
可以看到,日志分析,可以通过命令定制化分析,并且对于每个select,有执行的个数、耗时、锁表的时间、查询的行数、用户与host信息:
Count: 3 Time=0.01s (0s) Lock=0.00s (0s) Rows=25.0 (75), root[root]@localhost
可以知道,相比于慢查询日志,它可以对其进行整合,比如将相同的查询SQL计数为count。
EXPLAIN命令:
对于日志中记录的慢查询,使用EXPLAIN命令来查看查询的执行计划。分析查询是否使用了合适的索引,以及是否存在全表扫描等低效操作。
explain select * from jobs;

可以看到type=ALL,说明是全表扫描,没有进行索引。
优化查询
根据EXPLAIN的输出结果,优化查询语句,比如添加或修改索引。
避免在查询中使用*,而是指定需要的列。
减少JOIN操作的数量或复杂性,特别是在大数据集上。
考虑将计算密集型的操作移到应用层进行。
相关文章:
mysql慢sql排查与分析
当MySQL遇到慢查询(慢SQL)时,我们可以通过以下步骤进行排查和优化: 标题开启慢查询日志: 确保MySQL的慢查询日志已经开启。通过查看slow_query_log和slow_query_log_file变量来确认。 如果没有开启,可以…...
基于Springboot+Vue实现前后端分离酒店管理系统
一、🚀选题背景介绍 📚推荐理由: 近几年来,随着各行各业计算机智能化管理的转型,以及人们经济实力的提升,人们对于酒店住宿的需求不断的提升,用户的增多导致酒店管理信息的不断增多,…...
2024泰迪杯c题详细思路代码讲解:竞赛论文的辅助自动评阅
C:竞赛论文的辅助自动评阅 步骤一:理解拆解题目,并对附件1中的论文集进行初步分析。 步骤二:特征构造 论文完整性:开发算法以检查论文是否全面回答了赛题。这包括自然语言处理(NLP)技术来识别关键段落和论证的完整…...
【GEE实践应用】GEE下载遥感数据以及下载后在ArcGIS中的常见显示问题处理(以下载哨兵2号数据为例)
本期内容我们使用GEE进行遥感数据的下载,使用的相关代码如下所示,其中table是我们提前导入的下载遥感数据的研究区域的矢量边界数据。 var district table;var dsize district.size(); print(dsize);var district_geometry district.geometry();Map.…...
Excel 文件底部sheet 如何恢复
偶然打开一个excel文件,惊奇地发现:原来excel文件底部的若干个sheet居然全都看不到了。好神奇啊。 用其它的电脑打开同样的excel文件,发现:其实能看到的。说明这个excel文件并没有被损坏。只要将修改相关设置。就可以再次看…...
spring boot3登录开发-3(2短信验证登录/注册逻辑实现)
⛰️个人主页: 蒾酒 🔥系列专栏:《spring boot实战》 🌊山高路远,行路漫漫,终有归途 目录 写在前面 上文衔接 内容简介 功能分析 短信验证登录实现 1.创建交互对象 用户短信登录/注册DTO 创建用户登录VO…...
ChernoCPP 2
视频链接:【62】【Cherno C】【中字】C的线程_哔哩哔哩_bilibili 参考文章:TheChernoCppTutorial_the cherno-CSDN博客 Cherno的C教学视频笔记(已完结) - 知乎 (zhihu.com) C 的线程 #include<iostream> #include<th…...
【JavaEE】_Spring MVC项目获取Header
目录 1. 使用Servlet原生方法获取Header 2. 使用Spring注解获取Header 1. 使用Servlet原生方法获取Header .java文件内容如下: package com.example.demo.controller;import com.example.demo.Person; import org.springframework.web.bind.annotation.*; impor…...
JavaScript - 请你为数组自定义一个方法myFind,使其实现find方法的功能
难度级别:中级及以上 提问概率:50% 我们知道数组的find方法是ES6之后出现的,它强调找到第一个符合条件的元素后即跳出循环,不再继续执行,那么如果不用ES6的知识,为数组添加一个自定义方法实现find方法的功能,首先要想到在数组的原型pro…...
DSOX3034T是德科技DSOX3034T示波器
181/2461/8938产品概述: 特点: 带宽:350 MHz频道:4存储深度:4 Mpts采样速率:5 GSa/s更新速率:每秒1000000个波形波形数学和FFT自动探测接口用于连接、存储设备和打印的USB主机和设备端口 触摸: 8.5英寸电容式触摸屏专为触摸界面设计 发现: 业界最快的无损波形更…...
Golang | Leetcode Golang题解之第8题字符串转换整数atoi
题目: 题解: func myAtoi(s string) int {abs, sign, i, n : 0, 1, 0, len(s)//丢弃无用的前导空格for i < n && s[i] {i}//标记正负号if i < n {if s[i] - {sign -1i} else if s[i] {sign 1i}}for i < n && s[i] >…...
3月份全球市场推出的24款网络安全热点产品和服务:应用安全和生成式AI应用是热点
CSO在线追踪了3月份全球市场推出的代表性网络安全产品和服务,从中可以观察网络安全产品创新趋势和风向。 1、Bedrock Security的数据安全平台应对云和生成式AI带来的风险 3 月 26 日: Bedrock Security 推出了数据安全平台,旨在帮助组织防范…...
如何在微信小程序中使用less来编写css
在微信小程序中使用 Less 需要一些额外的配置步骤,因为小程序本身不支持直接引用 Less 文件。我们可以借助 Webpack 进行构建,使用一些 loader 来编译 Less 文件。以下是具体步骤: 初始化项目 使用微信开发者工具新建一个小程序项目,或在已有项目的基础上操作。 安装依赖 使…...
【Leetcode】【240407】678. Valid Parenthesis String
It’s time to go back home, today’s in tomorrow lol BGM:无地自容(黑豹乐队《黑豹》) Descripition Given a string s containing only three types of characters: ‘(’, ‘)’ and ‘*’, return true if s is valid. The following rules define a valid…...
移动平台相关(安卓)
目录 安卓开发 Unity打包安卓 编辑编辑 BuildSettings PlayerSettings OtherSettings 身份证明 配置 脚本编译 优化 PublishingSettings 调试 ReMote Android Logcat AndroidStudio的调试 Java语法 编辑编辑编辑 变量 运算符 编辑编辑编辑…...
[C++][算法基础]食物链(并查集)
动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形。 A 吃 B,B 吃 C,C 吃 A。 现有 N 个动物,以 1∼N 编号。 每个动物都是 A,B,C 中的一种,但是我们并不知道它到底是哪一种。 有人用两种说法对这 N…...
深入理解Transformer的位置编码机制
Transformer架构由于其独特的设计,不像传统的循环神经网络(RNN)或卷积神经网络(CNN),它无法自然地处理序列数据中的顺序信息。为了使模型能够理解序列中各元素的位置关系,Transformer引入了一种…...
10分钟上手:MySQL8的Json格式字段使用总结干货
一、关于效率和适用范围 尽管官方承诺Json格式字段采用了空间换时间的策略,比Text类型来存储Json有大幅度的效率提升。但是Json格式的处理过程仍然效率不及传统关系表,所以什么时候用Json格式字段尤为重要。 只有我们确定系统已经能精确定位到某一行&am…...
OpenCV 4.9基本绘图
返回:OpenCV系列文章目录(持续更新中......) 上一篇:OpenCV使用通用内部函数对代码进行矢量化 下一篇:使用OpenCV4.9的随机生成器和文本 目标 在本教程中,您将学习如何: 使用 OpenCV 函数 line() 画一…...
显示器and拓展坞PD底层协商
简介: PD显示器或者PD拓展坞方案中,连接显示设备的Type-C端口主要运行在DRP模式,在此模式下可以兼容Source(显卡)、Sink(信号器)、DRP(手机、电脑)模式的显示设备。 Sou…...
2026届学术党必备的六大AI辅助论文工具实际效果
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 知网在近期对自己的 AIGC 检测服务进行了升级,其目的在于识别存在于论文之中的、…...
LibreCAD:开源2D CAD解决方案的价值与实践指南
LibreCAD:开源2D CAD解决方案的价值与实践指南 【免费下载链接】LibreCAD LibreCAD is a cross-platform 2D CAD program written in C17. It can read DXF/DWG files and can write DXF/PDF/SVG files. It supports point/line/circle/ellipse/parabola/spline pri…...
基于Comsol的钢筋混凝土腐蚀开裂力学-化学耦合相场模型
基于Comsol的钢筋混凝土腐蚀开裂的力学-化学耦合相场模型 钢筋混凝土腐蚀开裂的力学-化学耦合相场模型,采用多场耦合有限元软件Comsol建模,方便易懂。 相场模型能够准确模拟钢筋混凝土的腐蚀诱导开裂行为。 (附源文件和参考论文)钢…...
当 95% 泳池拒绝轮椅人群时,“泳池升降机” 正在创造包容性蓝海
在一座城市的游泳馆里,坐在轮椅上的小李望着眼前的泳池,眼神中满是渴望却又带着一丝无奈。以往,他只能看着别人在水中畅游,因为大部分泳池没有适合他这样行动不便者入水的设施。但最近,这家游泳馆引入了一款便携式泳池…...
用STC32G的HSPWM做个数控电源:从BUCK电路到PID调参,我的DIY踩坑全记录
从零打造STC32G数控电源:我的BUCK电路实战与PID调参血泪史 作为一个常年泡在电子实验室的硬件爱好者,开关电源一直是我又爱又恨的领域。去年冬天,当我第N次烧毁某宝买的降压模块后,终于下定决心自己打造一台高精度数控电源。这次…...
前端实战:动态修改SVG图片颜色的5种高效方法
1. 为什么需要动态修改SVG颜色? 在Web开发中,SVG(可缩放矢量图形)已经成为不可或缺的一部分。相比传统的位图格式,SVG具有无限缩放不失真、文件体积小、支持交互和动画等优势。但最让我惊喜的是它的可编程性 - 我们可…...
关键词点击排名工具可以提高网站流量吗_关键词点击排名工具分析结果如何应用到SEO优化
关键词点击排名工具可以提高网站流量吗 在现代数字营销中,关键词点击排名工具已经成为许多网站和SEO专家的必备工具。它们提供了有关关键词的搜索量、竞争程度等重要数据,有助于网站优化和流量提升。但究竟这些工具能否真正提高网站流量,我们…...
定制化 H 型滑触线:抗温抗腐,高效赋能极端工业场景
【超越极限,安全稳定——为极端环境量身定制的H型滑触线】 在充满挑战的工作环境中,选择恰当的电源输送解决方案不仅是提高效率的关键,更是确保安全与可持续发展的基石。针对高温高湿、极寒或强腐蚀性场所特别设计的H型滑触线系列产品&#x…...
GHelper全面革新:华硕笔记本硬件控制的智能突破方案
GHelper全面革新:华硕笔记本硬件控制的智能突破方案 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Scar…...
Windows和Office激活终极解决方案:KMS_VL_ALL_AIO完全指南
Windows和Office激活终极解决方案:KMS_VL_ALL_AIO完全指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 你是否厌倦了Windows系统频繁弹出激活提醒?是否因为Office软件…...
