我的编程空间,编程开发者的网络收藏夹
学习永远不晚

导致sql执行速度慢的情况有哪些

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

导致sql执行速度慢的情况有哪些

这篇文章主要介绍了导致sql执行速度慢的情况有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇导致sql执行速度慢的情况有哪些文章都会有所收获,下面我们一起来看看吧。

1,数据库本身压力较大

如果数据库本身的性能压力就比较大,资源比较紧张,CPU占用率或者IO利用率很高,这时会导致所有的语句执行起来都比较慢。这种情况下首先要做的应该是提升服务器的配置,然后观察服务器的性能指标是否平稳。

导致sql执行速度慢的情况有哪些

2,表锁冲突

如果遇到一个简单的查询长时间未返回结果,那么大概率是表被锁住了。一般遇到这种情况,都是通过show processlist命令,查看sql语句的状态。

导致sql执行速度慢的情况有哪些

如图所示,id为8的语句正在等待一个MDL锁,我们可以使用kill命令杀掉这个阻塞线程。

另外还可以通过表sys.schema_table_lock_waits查询阻塞的线程id。

导致sql执行速度慢的情况有哪些

3,行锁冲突

mysql> select * from temp where id =3 for update;

当我们访问id=3这条记录时,使用了for update,表示要对这条语句加锁。但是如果此时已经有另一个事务对这条记录加了锁,并且一直持有不释放锁,那么当前语句就会一直阻塞。

导致sql执行速度慢的情况有哪些

通过上图可以看出,第一个语句不提交事务,第二个语句就一直处于等待阻塞状态。

我们执行show processlist,

导致sql执行速度慢的情况有哪些

可以看出确实有一个线程处于阻塞状态。

锁冲突会导致执行效率降低,进而影响到业务,需要我们重点关注。

4,索引未命中

mysql> select * from t where c=50000 limit 1;

如果字段c上面没有索引,那么就只能走主键id顺序扫描,一直扫描到第50000行才能停下来。

给表数据加索引可以快速提升查询性能,一般来说,因为索引失效导致的慢sql可能是我们平常开发过程中经常遇到的。

5,多表join查询

有了索引,并不代表万事大吉。如果一个比较复杂的sql,需要关联很多表进行查询,即使每张表的索引都可以起到作用,但是由于数据量过多,即使都命中索引,扫描的行数仍然是巨大的。这样sql的执行速度仍然会受到很大影响。

一般来说,超过3个表的join就应该尽量避免,将其拆分为多个查询,使用空间换时间也不失为一个好办法。

补充知识:慢 SQL 语句的几种常见诱因

1. 无索引、索引失效导致

慢查询如果在一张几千万数据的表中以一个没有索引的列作为查询条件,大部分情况下查询会非常耗时,这种查询毫无疑问是一个慢 SQL 查询。

所以对于大数据量的查询,需要建立适合的索引来优化查询。虽然我们很多时候建立了索引,但在一些特定的场景下,索引还有可能会失效,所以索引失效也是导致慢查询的主要原因之一。

2. 锁等待

常用的存储引擎有 InnoDB 和 MyISAM,前者支持行锁和表锁,后者只支持表锁。

如果数据库操作是基于表锁实现的,试想下,如果一张数据表在更新时,需要锁住整张表,那么其它大量数据库操作(包括查询)都将处于等待状态,这将严重影响到系统的并发性能。这时,InnoDB 存储引擎支持的行锁更适合高并发场景。

行锁升级为表锁的可能:

在批量更新操作时,行锁就很可能会升级为表锁。

MySQL 认为如果对一张表使用大量行锁,会导致事务执行效率下降,从而可能造成其它事务长时间锁等待和更多的锁冲突问题发生,致使性能严重下降,所以 MySQL 会将行锁升级为表锁。还有,行锁是基于索引加的锁,如果我们在更新操作时,条件索引失效,那么行锁也会升级为表锁。

因此,基于表锁的数据库操作,会导致 SQL 阻塞等待,影响执行速度。

行锁相对表锁来说,虽然粒度更细,并发能力提升了,但也带来了死锁的问题。因此,在使用行锁时,我们要注意避免死锁。

3. 不恰当的 SQL 语句

使用不恰当的 SQL 语句也是慢 SQL 最常见的诱因之一 :

在大数据表中使用 分页查询,以及对非索引字段进行排序等等。

关于“导致sql执行速度慢的情况有哪些”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“导致sql执行速度慢的情况有哪些”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注亿速云行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

导致sql执行速度慢的情况有哪些

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

导致sql执行速度慢的情况有哪些

这篇文章主要介绍了导致sql执行速度慢的情况有哪些的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇导致sql执行速度慢的情况有哪些文章都会有所收获,下面我们一起来看看吧。1,数据库本身压力较大如果数据库本身的性能
2023-03-10

导致sql执行速度慢的几种情况盘点(生产环境踩过的坑)

目录前言1,数据库本身压力较大2,表锁冲突3,行锁冲突4,索引未命中5,多表join查询补充知识:慢 SQL 语句的几种常见诱因总结前言当我们遇到慢sql,第一反应可能就是去优化我们的sql语句。一些比较复杂的语句如果执行慢可能还能理解,
2023-03-09

导致Golang速度变慢的原因有哪些

这篇文章主要讲解了“导致Golang速度变慢的原因有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“导致Golang速度变慢的原因有哪些”吧!内存分配内存分配是Golang速度变慢的主要原
2023-07-05

导致网站打开速度慢的原因有哪些

小编给大家分享一下导致网站打开速度慢的原因有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!  前段时间当我打开网站时发现,每个页面在加载时速度总是很慢,大概要
2023-06-10

MySQL导致索引失效的情况有哪些

本篇内容主要讲解“MySQL导致索引失效的情况有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL导致索引失效的情况有哪些”吧!一、准备工作首先准备两张表用于演示:CREATE TAB
2023-07-02

导致CDN缓存穿透的情况有哪些

请求不存在的资源:当用户请求一个不存在的资源时,CDN 会将该请求传递到源服务器,导致 CDN 缓存穿透。突发流量:当某个热门资源在短时间内被大量请求时,CDN 缓存可能无法满足所有请求,导致部分请求穿透到源服务器。资源更新频繁:如果某个资
导致CDN缓存穿透的情况有哪些
2024-04-24

导致Linux运行速度太慢的因素有哪些及怎么解决

这篇文章主要介绍了导致Linux运行速度太慢的因素有哪些及怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇导致Linux运行速度太慢的因素有哪些及怎么解决文章都会有所收获,下面我们一起来看看吧。我们在搞清
2023-06-27

c#中finally不执行的情况有哪些

在C#中,finally块中的代码应该会被执行,除非发生以下情况:程序被强制终止:如果程序被强制终止(如使用kill命令、任务管理器等),finally块中的代码可能不会被执行。系统崩溃:如果系统崩溃或发生不可恢复的错误,finally块中
c#中finally不执行的情况有哪些
2024-04-08

python运行速度慢的原因有哪些

Python运行速度慢的主要原因有以下几个:解释性语言:Python是一种解释性语言,而不是编译性语言,这意味着每行代码都需要在运行时进行解释和执行,而不是事先编译成机器码。这会导致Python程序的运行速度比编译性语言慢。动态类型:Pyt
2023-10-25

win10电脑运行速度慢的原因有哪些

这篇文章主要介绍“win10电脑运行速度慢的原因有哪些”,在日常操作中,相信很多人在win10电脑运行速度慢的原因有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”win10电脑运行速度慢的原因有哪些”的疑
2023-06-28

编程热搜

目录