连云港专业网站制作公司/云服务器

连云港专业网站制作公司,云服务器,wordpress 配置数据库,怎么自己做论坛网站吗在工作的过程中,很多时候会发现执行业务逻辑的时候,某一条SQL语句执行得非常慢。这时候,要如何处理这条语句,如何判断语句慢的地方在哪里? 一、初级排查 EXPLAIN慢SQL分析 MySQL官网用法: https://dev.mys…

在工作的过程中,很多时候会发现执行业务逻辑的时候,某一条SQL语句执行得非常慢。这时候,要如何处理这条语句,如何判断语句慢的地方在哪里?

一、初级排查 EXPLAIN+慢SQL分析

MySQL官网用法:
https://dev.mysql.com/doc/refman/8.4/en/explain.html
{EXPLAIN | DESCRIBE | DESC} ANALYZE [FORMAT = TREE] [schema_spec]
select_statement = [SELECT,UPDATE,DELETE,INSERT,REPLACE,TABLE]
schema_spec = {SCHEMA/DATABASE}
FORMAT = {JSON/TREE}

基础用法为:EXPLAIN SELECT * FROM XXX 执行语句的默认返回结果是tabular format

idselect_typetablepartitionstypepossible_keyskeykey_lenrefrowsfilteredExtra

字段解释:

1. id
定义: SELECT 查询的唯一标识符,每个 SELECT 子句分配一个独立 ID。
规则:
相同 ID:执行顺序从上到下(如简单 JOIN)。
不同 ID:数值越大优先级越高,越先执行(常见于嵌套子查询)。

2. select_type
定义: 查询类型,反映 SQL 的复杂度。
常见值:
SIMPLE:不含子查询或 UNION 的简单查询。
PRIMARY:最外层 SELECT(如含子查询的主查询)。
SUBQUERY:WHERE 或 HAVING 中的子查询。
DERIVED:FROM 子句中的子查询(临时表)。
UNION:UNION 操作的第二个或后续 SELECT。

3. table
定义: 当前查询涉及的表名或别名。
特殊情况:
<derivedN>:表示第 N 个子查询生成的临时表。
<unionM,N>:UNION 合并结果的临时表。

4. partitions
定义: 匹配的分区名称(仅当表使用分区时显示)。
示例: p0,p1 表示查询命中了分区 p0 和 p1。

5. type
定义: 表的访问方式,性能关键指标,从优到劣排序:
system > const > eq_ref > ref > range > index > ALL。
优化目标: 至少达到 range 级别,推荐 ref 或更高。

6. possible_keys
**定义:**理论上可能使用的索引列表(基于查询条件和表结构)。
注意: 可能为空(如全表扫描),但实际使用索引由 key 字段决定。

7. key
定义: 实际使用的索引名称。
特殊情况: NULL 表示未使用索引;PRIMARY 表示使用主键。

8. key_len
定义: 索引使用的字节数,反映索引字段的实际利用率。
规则:
数值越大,使用的索引字段越多。
根据字段类型和长度计算(如 INT 为 4 字节,可为 NULL 时 +1 字节)。

9. ref
定义: 与索引比较的列或常量。
常见值:
const:常量值(如 WHERE id=1)。
列名:关联查询中另一表的列(如 t1.col )。

10. rows
定义: MySQL 预估需要扫描的行数(基于统计信息)。
优化参考: 数值越小越好,若过大需检查索引或条件过滤。

11. filtered
定义: 经 WHERE 条件过滤后剩余行数的百分比。
示例: filtered=10% 表示预估 90% 数据被过滤。

12. Extra
定义: 额外执行信息,常见值及优化建议:
- Using filesort:需外部排序(建议添加索引优化 ORDER BY)。
- Using temporary:使用临时表(常见于GROUP BY,需优化查询或索引)。
- Using index:覆盖索引(无需回表,性能最佳)。
- Using where:WHERE条件过滤数据。

在以上的各个字段中,可以有限考虑分析Type与Extra这两个字段,如果无法分析出结果,再考虑其他字段。


除了使用基本的语法,还可以使用 EXPLAIN ANALYZE SELECT * xxx 这句语句会直接帮你分析语句的内容。
在这里插入图片描述

参数含义示例值说明
Table scan on user_login_logs执行计划类型:全表扫描(未使用索引,逐行遍历表数据)当前查询未命中索引,导致必须扫描整张表
cost=479916预估总成本:基于统计信息计算的资源消耗(包含CPU、IO等加权值成本单位是虚拟值,数值越大表示资源消耗越高
rows=4.68e+6预估扫描行数:优化器预测需要扫描的行数(基于数据分布统计)预计扫描468万行,与实际值(470万)误差约0.4%,说明统计信息较准确
actual time=0.0512…1585实际耗时:单位毫秒,0.0512为获取第一行的时间,1585为扫描全表总耗时首次数据返回极快,但全量扫描耗时1.585秒,可能引发性能瓶颈
rows=4.7e+6实际扫描行数:执行时真实处理的数据量实际扫描470万行,与预估基本一致,说明表体积较大
loops=1循环次数:该操作执行的总轮次(通常为1)单次全表扫描,无嵌套循环操作

全表扫描代价高
问题:未使用索引导致强制扫描全表,消耗大量I/O和CPU资源6。
验证:检查查询条件(如WHERE子句)是否涉及未索引字段,或索引选择性不足。

高成本与实际耗时匹配
现象:cost=479916与actual time=1585ms均表明操作代价极高。
根因:表数据量大(470万行),且无有效过滤条件或索引支持。

首次返回延迟低但总耗时长
特征:0.0512ms首行返回快,但全量处理需1.5秒,适合分批读取场景(如分页)。


二、慢查询日志分析

1、开启慢查询日志

show VARIABLES like '%slow_query_log%'
set GLOBAL slow_query_log = 1+-------------+-----+
|Variable_name      |value|
|slow_query_log     | ON  |
|slow_query_log_file| XXX |
+-------------+-----+show GLOBAL STATUS like '%Slow_queries%'
+-------------+-----+
|Slow_queries |  0  |
+-------------+-----+show GLOBAL VARIABLES like '%long_query_time%'
set GLOBAL long_query_time = 2
+-------------+-----+
|long_query_time |  2.0000  |
+-------------+-----+

2、捕获慢查询SQL

使用 mysqldumpslow 工具统计高频慢 SQL

root > mysqldumpslow -s t -t 10 /path/to/slow.log   

三、SHOW PROFILE 深度分析

1、开启性能分析:

show variables profiling;
set profiling = 1

2、执行目标SQL语句,查看耗时分布:

SHOW PROFILES;  
SHOW PROFILE CPU, BLOCK IO FOR QUERY [QUERY_ID];  

在这里插入图片描述

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

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

相关文章

优选算法的智慧之光:滑动窗口专题(二)

专栏&#xff1a;算法的魔法世界​​​​​​ 个人主页&#xff1a;手握风云 目录 一、例题讲解 1.1. 最大连续1的个数 III 1.2. 找到字符串中所有字母异位词 1.3. 串联所有单词的子串 1.4. 最小覆盖子串 一、例题讲解 1.1. 最大连续1的个数 III 题目要求是二进制数组&am…

2025嵌入式软件开发工程师--音频方向

一、选择题&#xff08;每题3分&#xff0c;共30分&#xff09; 1.以下哪个不是C语言中的关键字?&#xff08; &#xff09; A. int B. Float C. Define D. Return 2.以下代码的输出是: &#xff08; &#xff09; inta 5, b 10; printf("%d“, a b); A. 15 B.16 …

【Python 数据结构 1.零基础复习】

目录 一、输入与输出 1.输入 2.格式化输出 二、数字与变量 1.字符串 & 整型 2.字符串 & 整型 & 浮点型 3.变量 练习 2235. 两整数相加 三、运算与操作 1.四则运算 练习 2769. 找出最大的可达成数字 3.取整与取余 练习 2651. 计算列车到站时间 ​编辑 四、真与假 1…

大模型时代下的数据标注革命:工具、挑战与未来趋势

引言 随着大模型技术的飞速发展&#xff0c;人工智能对高质量标注数据的依赖愈发显著。传统的人工标注方式在效率、成本和场景适应性上逐渐显现瓶颈&#xff0c;而大模型凭借其强大的泛化能力和多模态理解能力&#xff0c;正在推动数据标注从“劳动密集型”向“智能工业化”转…

【azure openai】用tts实现语音对话【demo】

能实现&#xff1a; 只要替换里面的key&#xff0c;就能跑通。 key的查找方法&#xff1a; 【保姆级教程】如何在azure里快速找到openai的key和demo-CSDN博客 代码结构&#xff1a; azure_openai_client.py main.py prompts_config.py speech_utils.py stt01.py tts01.…

Spark(5)host配置

&#xff08;一.)host配置的作用&#xff1a; hosts 文件是一个本地的文本文件&#xff0c;它的作用是将主机名映射到对应的 IP 地址&#xff0c;在 DNS&#xff08;域名系统&#xff09;解析之前&#xff0c;系统会先查询 hosts 文件来确定目标主机的 IP 地址。 &#xff08;二…

Hive-04之存储格式、SerDe、企业级调优

一、主题 hive表的数据压缩和文件存储格式hive的自定义UDF函数hive的JDBC代码操作hive的SerDe介绍和使用hive的优化 二、要点 1. hive表的文件存储格式 Hive支持的存储数的格式主要有&#xff1a;TEXTFILE&#xff08;行式存储&#xff09; 、SEQUENCEFILE(行式存储)、ORC&…

Excel的行高、列宽单位不统一?还是LaTeX靠谱

想要生成田字格、米字格、带拼音标准&#xff0c;方便小学生书法和练字。Word&#xff0c;Excel之类所见即所得是最容易相当的方式。但它们处理带田字格之类背景时&#xff0c;如果没有专用模板、奇奇怪怪的插件&#xff0c;使用起来会碰到各种问题。比如&#xff0c;Word里面用…

[免费]微信小程序(校园)二手交易系统(uni-app+SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序(校园)二手交易系统(uni-appSpringBoot后端Vue管理端)&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序(校园)二手交易系统(uni-appSpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bi…

清华北大DeepSeek六册

「清华北大-Deepseek使用手册」 链接&#xff1a;https://pan.quark.cn/s/98782f7d61dc 「清华大学Deepseek整理&#xff09; 1&#xff0d;6版本链接&#xff1a;https://pan.quark.cn/s/72194e32428a AI学术工具公测链接:https://pan.baidu.com/s/104w_uBB2F42Da0qnk78_ew …

零信任沙箱:为网络安全筑牢“隔离墙”

在数字化浪潮汹涌澎湃的今天&#xff0c;网络安全如同一艘船在波涛汹涌的大海中航行&#xff0c;面临着重重挑战。数据泄露、恶意软件攻击、网络钓鱼等安全威胁层出不穷&#xff0c;让企业和个人用户防不胜防。而零信任沙箱&#xff0c;就像是一座坚固的“隔离墙”&#xff0c;…

【String】917. 仅仅反转字母

917. 仅仅反转字母 - 力扣&#xff08;LeetCode&#xff09; 使用双指针&#xff0c;一个指针指向s的开始&#xff0c;一个指向s的末尾&#xff0c;同时遍历即可。

大语言模型学习

大语言模型发展历程 当前国内外主流LLM模型 ‌一、国外主流LLM‌ ‌LLaMA2‌ Meta推出的开源模型&#xff0c;参数规模涵盖70亿至700亿&#xff0c;支持代码生成和多领域任务适配‌57。衍生版本包括Code Llama&#xff08;代码生成优化&#xff09;和Llama Chat&#xff08;对…

3dsmax烘焙光照贴图然后在unity中使用

效果预览 看不清[完蛋&#xff01;] 实现步骤 使用 软件 软体名称地址photoshophttps://www.adobe.com/products/photoshop.htmlunity3Dhttps://unity.com/3dsmaxhttps://www.autodesk.com.cn/products/3ds-max/free-trialpacker-iohttps://www.uv-packer.com/HDR 贴图地址…

P8651 [蓝桥杯 2017 省 B] 日期问题--注意日期问题中2月的天数 / if是否应该连用

P8651 [P8651 [蓝桥杯 2017 省 B] 日期问题--注意日期问题中2月的天数 / if是否应该连用 题目 分析代码 题目 分析 代码中巧妙的用到3重循环&#xff0c;完美的解决了输出的顺序问题【题目要求从小到大】 需要注意的是2月的值&#xff0c;在不同的年份中应该更新2月的值 还有…

android 横竖屏适配工作总结

1、创建一个横屏文件夹&#xff0c;复制一份竖屏的布局。然后修改适配横屏。只要布局id都有&#xff0c;其他想怎么改就怎么修改。 2、最好使用kotlin语言编写和使用viewBinding绑定控件&#xff0c;可以使用?.判空控件是否存在&#xff0c;不至于缺少这个控件时候直接崩溃。 …

VS2022远程调试Ubuntu中的C++程序

前言 最近想基于星火大模型的SDK开发第一些应用。但是&#xff0c;发现星火的SDK当中Linux版本的比较丰富&#xff0c;Windows 版本支持的比较少。但是&#xff0c;从调试的IDE而言&#xff0c;Visual Studio又是最方便的。所以&#xff0c;考虑采用Visual Studio Ubuntu的形式…

VS Code(Cursor)远程开发调试教程(超详细)

前言 &#x1f4e2; 声明&#xff1a;本文配置及开发方法同样适合Cursor &#xff01;&#xff01; 在开始之前&#xff0c;你需要准备以下东西&#xff1a; 本地电脑&#xff1a; 安装好 VS Code&#xff08;Windows、Mac 或 Linux 都可以&#xff09;。 官网下载&#xff0c…

【C++】类与对象:深入理解默认成员函数

类与对象&#xff1a;深入理解默认成员函数 引言1、默认成员函数概述2、构造函数与析构函数2.1 默认构造函数2.2 析构函数 3、拷贝控制成员3.1 拷贝构造函数3.2 赋值运算符重载 4、移动语义&#xff08;C11&#xff09;4.1 移动构造函数4.2 移动赋值运算符 5、三五法则与最佳实…

QT实现计算器

1&#xff1a;在注册登录的练习里面&#xff0c; 追加一个QListWidget 项目列表 要求&#xff1a;点击注册之后&#xff0c;将账号显示到 listWidget上面去 以及&#xff0c;在listWidget中双击某个账号的时候&#xff0c;将该账号删除 Widget.h #ifndef WIDGET_H #define…