为什么我这条SQL执行那么慢?

Spring的JDBCTemplate批量更新的性能问题 阅读详情

640?wx_fmt=jpeg


 

本文公众号来源:苦逼的码农     作者:帅地


一条SQL执行语句很慢有什么原因?

说实话,这个问题可以涉及到 MySQL 的很多核心知识,可以扯出一大堆,就像要考你计算机网络的知识时,问你“输入URL回车之后,究竟发生了什么”一样,看看你能说出多少了。

之前腾讯面试的实话,也问到这个问题了,不过答的很不好,之前没去想过相关原因,导致一时之间扯不出来。所以今天,我带大家来详细扯一下有哪些原因,相信你看完之后一定会有所收获,不然你打我。

一、开始装逼:分类讨论

一条 SQL 语句执行的很慢,那是每次执行都很慢呢?还是大多数情况下是正常的,偶尔出现很慢呢?所以我觉得,我们还得分以下两种情况来讨论。

1、大多数情况是正常的,只是偶尔会出现很慢的情况。

2、在数据量不变的情况下,这条SQL语句一直以来都执行的很慢。

针对这两种情况,我们来分析下可能是哪些原因导致的。

二、针对偶尔很慢的情况

一条 SQL 大多数情况正常,偶尔才能出现很慢的情况,针对这种情况,我觉得这条SQL语句的书写本身是没什么问题的,而是其他原因导致的,那会是什么原因呢?

1、数据库在刷新脏页我也无奈啊

当我们要往数据库插入一条数据、或者要更新一条数据的时候,我们知道数据库会在内存中把对应字段的数据更新了,但是更新之后,这些更新的字段并不会马上同步持久化到磁盘中去,而是把这些更新的记录写入到 redo log 日记中去,等到空闲的时候,在通过 redo log 里的日记把最新的数据同步到磁盘中去。

不过,redo log 里的容量是有限的,如果数据库一直很忙,更新又很频繁,这个时候 redo log 很快就会被写满了,这个时候就没办法等到空闲的时候再把数据同步到磁盘的,只能暂停其他操作,全身心来把数据同步到磁盘中去的,而这个时候,就会导致我们平时正常的SQL语句突然执行的很慢,所以说,数据库在在同步数据到磁盘的时候,就有可能导致我们的SQL语句执行的很慢了。

2、拿不到锁我能怎么办

这个就比较容易想到了,我们要执行的这条语句,刚好这条语句涉及到的表,别人在用,并且加锁了,我们拿不到锁,只能慢慢等待别人释放锁了。或者,表没有加锁,但要使用到的某个一行被加锁了,这个时候,我也没办法啊。

如果要判断是否真的在等待锁,我们可以用 show processlist这个命令来查看当前的状态哦,这里我要提醒一下,有些命令最好记录一下,反正,我被问了好几个命令,都不知道怎么写,呵呵。

下来我们来访分析下第二种情况,我觉得第二种情况的分析才是最重要的

三、针对一直都这么慢的情况

如果在数据量一样大的情况下,这条 SQL 语句每次都执行的这么慢,那就就要好好考虑下你的 SQL 书写了,下面我们来分析下哪些原因会导致我们的 SQL 语句执行的很不理想。

我们先来假设我们有一个表,表里有下面两个字段,分别是主键 id,和两个普通字段 c 和 d。

mysql> CREATE TABLE `t` (  `id` int(11) NOT NULL,  `c` int(11) DEFAULT NULL,  `d` int(11) DEFAULT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB;int(11) NOT NULL,
  `c` int(11) DEFAULT NULL,
  `d` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB;

1、扎心了,没用到索引

没有用上索引,我觉得这个原因是很多人都能想到的,例如你要查询这条语句

select * from t where 100 <c and c < 100000;from t where 100 <c and c < 100000;

(1)、字段没有索引

刚好你的 c 字段上没有索引,那么抱歉,只能走全表扫描了,你就体验不会索引带来的乐趣了,所以,这回导致这条查询语句很慢。

(2)、字段有索引,但却没有用索引

好吧,这个时候你给 c 这个字段加上了索引,然后又查询了一条语句

select * from t where c - 1 = 1000;from t where c - 1 = 1000;

我想问大家一个问题,这样子在查询的时候会用索引查询吗?

答是不会,如果我们在字段的左边做了运算,那么很抱歉,在查询的时候,就不会用上索引了,所以呢,大家要注意这种字段上有索引,但由于自己的疏忽,导致系统没有使用索引的情况了。

正确的查询应该如下

select * from t where c = 1000 + 1;from t where c = 1000 + 1;

有人可能会说,右边有运算就能用上索引?难道数据库就不会自动帮我们优化一下,自动把 c - 1=1000 自动转换为 c = 1000+1。

不好意思,确实不会帮你,所以,你要注意了。

(3)、函数操作导致没有用上索引

如果我们在查询的时候,对字段进行了函数操作,也是会导致没有用上索引的,例如

select * from t where pow(c,2) = 1000;from t where pow(c,2) = 1000;

这里我只是做一个例子,假设函数 pow 是求 c 的 n 次方,实际上可能并没有 pow(c,2)这个函数。其实这个和上面在左边做运算也是很类似的。

所以呢,一条语句执行都很慢的时候,可能是该语句没有用上索引了,不过具体是啥原因导致没有用上索引的呢,你就要会分析了,我上面列举的三个原因,应该是出现的比较多的吧。


2、呵呵,数据库自己选错索引了

我们在进行查询操作的时候,例如

select * from t where 100 < c and c < 100000;from t where 100 < c and c < 100000;

我们知道,主键索引和非主键索引是有区别的,主键索引存放的值是整行字段的数据,而非主键索引上存放的值不是整行字段的数据,而且存放主键字段的值。不大懂的可以看我这篇文章:面试小知识:MySQL索引相关    里面有说到主键索引和非主键索引的区别

也就是说,我们如果走 c 这个字段的索引的话,最后会查询到对应主键的值,然后,再根据主键的值走主键索引,查询到整行数据返回。

好吧扯了这么多,其实我就是想告诉你,就算你在 c 字段上有索引,系统也并不一定会走 c 这个字段上的索引,而是有可能会直接扫描扫描全表,找出所有符合 100 < c and c < 100000 的数据。

为什么会这样呢?

其实是这样的,系统在执行这条语句的时候,会进行预测:究竟是走 c 索引扫描的行数少,还是直接扫描全表扫描的行数少呢?显然,扫描行数越少当然越好了,因为扫描行数越少,意味着I/O操作的次数越少。

如果是扫描全表的话,那么扫描的次数就是这个表的总行数了,假设为 n;而如果走索引 c 的话,我们通过索引 c 找到主键之后,还得再通过主键索引来找我们整行的数据,也就是说,需要走两次索引。而且,我们也不知道符合 100 c < and c < 10000 这个条件的数据有多少行,万一这个表是全部数据都符合呢?这个时候意味着,走 c 索引不仅扫描的行数是 n,同时还得每行数据走两次索引。

所以呢,系统是有可能走全表扫描而不走索引的。那系统是怎么判断呢?

判断来源于系统的预测,也就是说,如果要走 c 字段索引的话,系统会预测走 c 字段索引大概需要扫描多少行。如果预测到要扫描的行数很多,它可能就不走索引而直接扫描全表了。

那么问题来了,系统是怎么预测判断的呢?这里我给你讲下系统是怎么判断的吧,虽然这个时候我已经写到脖子有点酸了。

系统是通过索引的区分度来判断的,一个索引上不同的值越多,意味着出现相同数值的索引越少,意味着索引的区分度越高。我们也把区分度称之为基数,即区分度越高,基数越大。所以呢,基数越大,意味着符合 100 < c and c < 10000 这个条件的行数越少。

所以呢,一个索引的基数越大,意味着走索引查询越有优势。

那么问题来了,怎么知道这个索引的基数呢?

系统当然是不会遍历全部来获得一个索引的基数的,代价太大了,索引系统是通过遍历部分数据,也就是通过采样的方式,来预测索引的基数的。

扯了这么多,重点的来了,居然是采样,那就有可能出现失误的情况,也就是说,c 这个索引的基数实际上是很大的,但是采样的时候,却很不幸,把这个索引的基数预测成很小。例如你采样的那一部分数据刚好基数很小,然后就误以为索引的基数很小。然后就呵呵,系统就不走 c 索引了,直接走全部扫描了。

所以呢,说了这么多,得出结论:由于统计的失误,导致系统没有走索引,而是走了全表扫描,而这,也是导致我们 SQL 语句执行的很慢的原因。

这里我声明一下,系统判断是否走索引,扫描行数的预测其实只是原因之一,这条查询语句是否需要使用使用临时表、是否需要排序等也是会影响系统的选择的。

不过呢,我们有时候也可以通过强制走索引的方式来查询,例如

select * from t force index(a) where c < 100 and c < 100000;from t force index(a) where c < 100 and c < 100000;

我们也可以通过

show index from t;index from t;

来查询索引的基数和实际是否符合,如果和实际很不符合的话,我们可以重新来统计索引的基数,可以用这条命令

analyze table t;table t;

来重新统计分析。

既然会预测错索引的基数,这也意味着,当我们的查询语句有多个索引的时候,系统有可能也会选错索引哦,这也可能是 SQL 执行的很慢的一个原因。

好吧,就先扯这么多了,你到时候能扯出这么多,我觉得已经很棒了,下面做一个总结。

四、总结

以上是我的总结与理解,最后一个部分,我怕很多人不大懂数据库居然会选错索引,所以我详细解释了一下,下面我对以上做一个总结。

一个 SQL 执行的很慢,我们要分两种情况讨论:

1、大多数情况下很正常,偶尔很慢,则有如下原因

(1)、数据库在刷新脏页,例如 redo log 写满了需要同步到磁盘。

(2)、执行的时候,遇到锁,如表锁、行锁。

2、这条 SQL 语句一直执行的很慢,则有如下原因。

(1)、没有用上索引:例如该字段没有索引;由于对字段进行运算、函数操作导致无法用索引。

(2)、数据库选错了索引。

大家如果有补充的,也是可以留言区补充一波哦。


推荐阅读



640?wx_fmt=jpeg

转发朋友圈是对我最大的支持!

为什么会出现慢SQL 为什么会出现慢SQL 在生产环境中,慢SQL是一个比较严重的问题,在面试时也会经常被问到,那究竟哪些情况会产生慢SQL,我们又该如何排查,如何定位呢?接下来我们将一步步带来这些问题的答案 写操作 刷脏页 脏页的定义是这样的:内存数据页和磁盘数据页不一致时,那么称这个内存数据页为脏页。 对于一条写操作的 SQL 来说,执行的过程中涉及到写日志,内存及同步磁盘这几种情况 在写操作时,InnoDB会将记录写入到 redo log 中,并更新缓存,这样更新操作就算完成了。后续操作存储引擎会在适当的时候(buffer 阅读详情

相关推荐

SQL执行慢排查以及优化思路

我今天梳理了 SQL 优化的思路,从步骤上看,我们需要先进行观察和分析,分析工具的使用在日常工作中还是很重要的。今天只介绍了常用的三种分析工具,实际上可以使用的分析工具还有很多。我在这里总结一下今天文章里提到的三种分析工具。我们可以通过慢查询日志定位执行慢的 SQL,然后通过 EXPLAIN 分析该 SQL 语句是否使用到了索引,以及具体的数据表访问方式是怎样的。我们也可以使用 SHOW PROFILE 进一步了解 SQL 每一步的执行时间,包括 I/O 和 CPU 等资源的使用情况。

huan1213858的博客 1659

JdbcTemplate批量更新慢的问题

jdbcTemplate更新慢问题

zhao_java_drao的博客 2105

排查慢SQL

​ 我今天梳理了 SQL 优化的思路,从步骤上看,我们需要先进行观察和分析,分析工具的使用在日常工作中还是很重要的。今天只介绍了常用的三种分析工具,实际上可以使用的分析工具还有很多。​ 我在这里总结一下今天文章里提到的三种分析工具。我们可以通过慢查询日志定位执行慢的​ SQL,然后通过 EXPLAIN 分析该 SQL 语句是否使用到了索引,以及具体的数据表访问方式是怎样的。

weixin_49708955的博客 1884

深入分析JdbcTemplate批量插入慢的问题:PreparedStatement和Statement的差别

jdbcTemplate是Spring框架中的一个数据库操作工具类,类位置位于org.springframework.jdbc.core。其中具体的对数据库的链接实现,会依据application.properties或者其他配置文件中,具体配置的数据库连接类型,自动判定选用哪个jdbc的驱动包来实现相关操作。而这些驱动的jar包,也是依据java.sql包中定的相关接口规范进行实现开发的。jdb...

yingjia11的博客 8006

oracle 12c查看执行过的sql及当前正在执行的sql

2.PARSING_SCHEMA_NAME显示的是哪个用户执行的该sql,而不是这个sql操作的表属于哪个schema。当执行新的SQL语句时,如果这条SQL语句不在共享池中,数据库会进行硬解析,并将解析后的执行计划加载到共享池中。如果执行的是共享池内已经存在的SQL语句,则只会进行软解析,LAST_LOAD_TIME的值不会改变。假如同事让排查某个接口都有哪些慢sql,可以使用这个方法(先调用下这个慢接口,然后统计下这个时间段内的慢sql),只是会导出非这个接口的多余慢sql,再结合业务进行筛选吧。

m0_74824954的博客 1122

MySql学习之慢SQL优化和慢SQL案例

慢查询日志记录慢SQL explain查看分析SQL的执行计划 profile分析执行耗时 Optimizer Trace分析详情 确定慢SQL问题并采用相应的方案 隐式转换、最左匹配、深分页问题、in元素过多、order by 走文件排序、 索引字段上使用(!= 或者 < >)索引字段上使用is null, is not null,索引可能失效、 左右连接,关联的字段的编码格式不一样 、group by使用临时表、delete + in子查询不走索引、 其它索引失效场景,如like '%xxx'

zwb的博客 3289

关于使用jdbcTemplate的PreparedStatement进行批量插入速度缓慢问题记录

最近公司项目使用jdbcTemplate的batchupdate方法进行批量数据插入,但是效率很慢,上源码 String sqlStr = "INSERT INTO " + tableName + "(xh,timetemp,row_num) VALUES(?,?,?)"; List<Object[]> batchArgs = new ArrayList<>(); log.info("开始循环赋值数据。。。"); for (BiTe

weixin_40580131的博客 5679

为什么你的SQL执行很慢

为什么你的SQL执行很慢SQL语句执行很慢原因分析1.没走索引1.1对索引字段进行了计算操作1.2存在隐式类型转换1.3 like操作1.4隐式编码转换1.5 not in 操作1.6扫描行数太多2.等待锁3.刷脏页4.执行undo log索引设计原则讨论 最近看完了丁奇老师在极客时间的课程,不得不说确实干货满满,然后趁着热乎劲顺手又二刷了《MySQL技术内幕》中的部分内容。但很多东西都是零散的,...

shysheng的博客 4381

使用jdbcTemplate BatchUpdate批量插入效率慢的问题

原因是没加jdbc连接参数导致多条插入被识别成一条一条执行,在jdbc连接URL后加上如下参数:   rewriteBatchedStatements=true   examp: url: jdbc:mysql://xxxx:3306/syncdata_test?useUnicode=true&amp;characterEncoding=utf8&amp;rewriteBatchedSt...

Reiner的专栏 1万+

Open3D:Win10 + VS2017配置Open3D(C++、python)

一、下载源码 地址:https://github.com/intel-isl/Open3D 1.1 克隆源码【笔者的源码路径为D:\Open3D\Open3D】 1.2 切换版本【笔者的版本为0.8.0】 1.3 更新子模块【用于获取第三方库!很重要!】 二、CMake编译 2.1 设置路径 【source code: D:\Open3D\Open3D;build binaries: D:\Open3D】 【笔者设置CMAKE/CMAKE_INSTALL_PREFIX的路径为D:/Open.

累了就要打游戏 1万+

将Apollo高精地图中的车道线叠加在多种导航地图上

本文介绍了将Apollo高精地图车道线叠加到普通导航地图的技术方案。高精地图具备厘米级车道精度和丰富的语义信息,叠加可实现可视化验证、调试分析和数据对比等功能。核心技术包括坐标系统转换(UTM/WGS84/BD09/GCJ02)和数据处理流程,通过Python脚本完成Apollo地图解析、坐标批量转换和多格式输出。文章详细提供了环境准备、工作目录创建和坐标转换脚本等操作步骤,实现了高精地图数据在OpenStreetMap、百度地图和高德地图上的可视化展示。

Hi20240217的博客 1333

sql在什么时候去执行_为什么我这条SQL执行那么慢?

本文公众号来源:苦逼的码农作者:帅地一条SQL执行语句很慢有什么原因?说实话,这个问题可以涉及到MySQL的很多核心知识,可以扯出一大堆,就像要考你计算机网络的知识时,问你“输入URL回车之后,究竟发生了什么”一样,看看你能说出多少了。之前腾讯面试的实话,也问到这个问题了,不过答的很不好,之前没去想过相关原因,导致一时之间扯不出来。所以今天,我带大家来详细扯一下有哪些原因,...

weixin_39578457的博客 73

【异常】解决 Claude Code 及第三方插件提示 “API Error: 404“ 的配置修复指南

在使用 Claude 相关的 CLI 工具(如)或 IDE 插件进行开发辅助时,配置错误的模型参数是导致连接失败的常见原因。本文将针对这一典型报错进行复盘与解决。

奶爸的编程之路,也就一周冷个三天 7747

【MySQL数据库】一条SQL语句为什么执行这么慢?

这是一个面试高频题目,一条SQL语句为什么执行这么慢? 这其中涉及的知识也是各种各样,有条理分情况的回答下来会很加分,今天就来剖析下这个问题吧!

Moo_Lavender的博客 2952

RK3588开发笔记-Buildroot编译Qt5WebEngine-5.15.10

Rockchip RK3588是一款强大的多核处理器,广泛应用于边缘计算、人工智能、嵌入式系统等领域。为了在RK3588上运行自定义的Linux系统,并使用Qt5WebEngine进行Web内容渲染,Buildroot是一个非常合适的工具。本文将详细介绍如何使用Buildroot编译并配置Qt5WebEngine-5.15.10。Qt5WebEngine是Qt框架中的一个模块,它提供了一个功能强大的Web浏览器引擎,允许开发者在Qt应用程序中嵌入和显示现代网页内容。

flypig has a dream! 1158

LeRobot 入门教程(七)数据集

LeRobot Dataset v3.0 是机器人学习数据的标准化格式,支持多模态时间序列数据和视频的统一访问。该版本通过基于文件的存储(Parquet/MP4)、关联元数据和Hub原生流式处理等新特性,显著提升了性能并降低了存储开销。文档详细介绍了格式设计、安装使用、数据记录与加载方法,以及从v2.1迁移到v3.0的步骤,特别针对大型数据集(如DROID 1.0.1)的处理提供了SLURM集群移植方案。v3.0通过优化文件组织和元数据管理,实现了更快的加载速度、更高的内存效率和更好的可扩展性。

2506_90492529的博客 2054

SQL执行慢怎么解决?

SQL 执行慢是数据库性能优化中常见的问题,解决 SQL 执行慢的原因和方法可以从多个角度进行分析和优化。以下是针对 SQL 执行慢的常见原因以及优化方法。执行计划是优化 SQL 的重要工具,它展示了数据库在执行 SQL 语句时的操作步骤和选择的索引。通过分析执行计划,可以识别慢查询的瓶颈。 语法示例: 关注点::查询类型,理想状态是 、、,而 或 表示全表扫描或全索引扫描,通常需要优化。:显示使用的索引。检查是否使用了合适的索引。:扫描的行数。行数多意味着查询效率低,需要优化。:查看是否使

weixin_46072507的博客 1854

2021.07.05【R语言】丨预测lncRNA并绘制venn图

目录摘要环境与方法依赖工具预测工具绘制工具使用命令预测lncRNA统计noncoding_ID绘制Venn图结果展示总结 摘要 接到一个单样品测lncRNA数据的项目,正好拿来练练手,梳理一下lncRNA流程。这里记录预测lncRNA并生成venn图的过程 环境与方法 R version 3.6.3 (2020-02-29) 依赖工具 预测工具 CPC2 CNCI Pfam CPAT 绘制工具 R:VennDiagram 使用命令 预测lncRNA CPC2 #更换env conda activate py

2035

如何监控和优化 MySQL 中的慢 SQL

MySQL 是广泛使用的关系型数据库,但随着数据量和查询复杂度的增加,性能问题逐渐显现,尤其是慢 SQL 查询。本文将介绍如何监控和优化 MySQL 中的慢 SQL,以提升数据库性能。

李长渊的博客 1880

详解Agent Skills:让AI拥有更多专业能力(什么是Agent Skills?如何创建?如何使用?如何获取?)

本文分享如何将零散指令沉淀为可复用的 AI 能力模块🧩,介绍什么是Agent Skills?如何创建?如何获取?📚

XiaoqiangClub的博客 1270

★教程1:matlab学习教程入门100例目录

★基础入门 1.为什么要学习MATLAB 2.MATLAB安装 持续更新....... ★MATLAB基础编程语言熟悉

FPGA/MATLAB学习教程/源码/项目合作开发 4万+

SQL执行慢的问题排查和优化思路

因为更新时,普通索引可以使用change buffer进行优化,减少磁盘IO,将更新操作记录到change bugger,等查询来了将数据读到内存再进行修改。除了这些,我们有时也会考虑,把数据、日志、索引放到不同I/O设备上,增加读取速度,升级硬件,提高网速等等。当然采用集群,无疑要增加成本,分库分表又要考虑分布式事务、分布式lD、一致性等等问题,因此有好也有坏,当你采用某种措施之前也得考虑其性价比,最终带来的好处更多还是坏处更多。避免索引失效,然后可以尽量覆盖索引,5.6支持索引下推可以使得速度更快。

qq_46130027的博客 5080

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

慢SQL?

今天和大家聊一个常见的问题:慢SQL。 通过本文你将了解到以下内容: 慢SQL的危害 SQL语句的执行过程 存储引擎和索引的那些事儿 慢SQL解决之道 后续均以MySQL默认存储引擎InnoDB为例进行展开,话不多说,开搞! 1.慢SQL的危害 慢SQL,就是跑得很慢的SQL语句,你可能会问慢SQL会有啥问题吗? 试想一个场景: 大白和小黑端午出去玩,机票太贵于是买了高铁,火车站的人真是乌央乌央的。 马上检票了,大白和小黑准备去厕所清理下库存,坑

Jack, what else can you do besides holding your little darling? 3420

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

一站式排查优化慢SQL

面试中该如何回答排查优化慢SQL呢?这篇文章为你一站式解决!

欢迎大家指正与批评,还有掘金同名博客欢迎大家关注 1635

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

oracle怎样通过固化较优执行计划来优化慢sql

这些查询sql如果执行了好几个小时的话,问下业务能否kill。COE_XFR_SQL_PROFILE_7arsymf6aatr3_2931187647 completed >>>>固化完成。收集该表的统计信息和固化执行计划不会影响已经在执行的sql。我手动执行这个sql(5秒),看它的执行计划这个表是走了索引的。在分析期间, 此 SQL 语句至少利用了 6 个不同的执行计划。如果收集完表的统计信息,sql还是慢,则固化下执行计划。>>>入参1:此处输入需要固化的SQL_ID。

雅冰石的专栏 1029

(mysql)为什么一条慢sql会影响到其他简单sql的执行

慢 SQL 的本质是 “长期独占关键资源”,而数据库的资源(锁、CPU、IO、连接、内存)是有限的。其他简单 SQL 虽然逻辑简单,但因 “资源被慢 SQL 占用”,不得不等待或降级使用低速资源(如 swap),最终表现为 “执行变慢”。限制慢 SQL 的资源占用时间(如超时终止、优化 SQL 减少执行时间),避免其长期独占资源。

qq_36633637的博客 723
上一篇: 一波囤书好机会!⎡送书+文章导航⎦
下一篇: 哇!这就是HDFS!
Java3y
Java3y 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 1万+粉丝 509原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值