SQL 语句执行很慢的原因「建议收藏」

SQL 语句执行很慢的原因「建议收藏」大多数情况是正常的,只是偶尔会出现很慢的情况 网络问题 数据库在刷新脏页 获取锁失败,我们可以用 show processlist这个命令来查看当前的状态 刷脏页有下面4种场景(后两种不用太

SQL 语句执行很慢的原因

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

  • 网络问题

  • 数据库在刷新脏页

  • 获取锁失败,我们可以用 show processlist这个命令来查看当前的状态

刷脏页有下面4种场景(后两种不用太关注“性能”问题):

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

  • 内存不够用了:如果一次查询较多的数据,恰好碰到所查数据页不在内存中时,需要申请内存,而此时恰好内存不足的时候就需要淘汰一部分内存数据页,如果是干净页,就直接释放,如果恰好是脏页就需要刷脏页。

  • MySQL 认为系统“空闲”的时候/ Master Thread:这时系统IO压力不大,每秒或每十秒的异步刷新操作

  • MySQL 正常关闭的时候:这时候,MySQL 会把内存的脏页都 flush 到磁盘上,这样下次 MySQL 启动的时候,就可以直接从磁盘上读数据,启动速度会很快。

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

  • 没有用上索引:例如该字段没有索引;由于对字段进行运算、函数操作导致无法用索引。
  • 数据库选错了索引

有索引但是最终却选择全表扫描的原因:

例如以下SQL:

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

代码100分

索引的选择判断来源于系统的预测,也就是说,如果要走 c 字段索引的话,系统会预测走 c 字段索引大概需要扫描多少行。如果预测到要扫描的行数很多(大概接近于20%),它可能就不走索引而直接扫描全表了。因为索引c将标识多一次的辅助索引的查询,造成IO的增多。

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/8935.html

(0)
上一篇 2023-02-19
下一篇 2023-02-19

相关推荐

  • MySQL在Linux环境下的安装、初始化、配置「终于解决」

    MySQL在Linux环境下的安装、初始化、配置「终于解决」解决MySQL 8.0在Linux环境下的安装、初始化、配置。参考环境:MySQL Community Server 8.0.28;CentOS Linux release 7.9.2009。

    2023-05-15
    142
  • 愚人节不愚人文案_love bug

    愚人节不愚人文案_love bug愚人节(别名:万愚节、幽默节,英文名:April Fool's Day或All Fools' Day)是从19世纪开始在西方兴起流行的民间节日,日期在每年公历的4月1日。对于愚人…

    2023-04-11
    163
  • 获取数据表列相关数据

    获取数据表列相关数据虽然本人在开发数据库时,不太使用视图,但是还是知道 如何获取视图中使用的所有表列: SELECT * FROM INFORMATION_SCHEMA.VIEW_COLUMN_USAGE 如何获取包含视

    2022-12-28
    161
  • Python工程师的Opencv安装指南

    Python工程师的Opencv安装指南Opencv(Open Source Computer Vision)是一个广泛使用的计算机视觉开源库,适用于工业图像处理、机器人视觉等领域。由于其功能强大,Opencv被广泛应用于图像处理、人脸检测、目标跟踪、运动分析、手势识别等领域中。

    2024-06-05
    67
  • Python卸载库指南

    Python卸载库指南Python是一门广泛使用的编程语言,每个Python用户都需要偶尔卸载库。Python库可以是Python模块、程序包和其他需要在Python中运行的文件。但当Python库不再需要或者出现问题时,卸载库是必要的。

    2024-07-19
    44
  • Oracle学习笔记二十四:自定义函数之返回结果集

    Oracle学习笔记二十四:自定义函数之返回结果集一、基本说明 • Oracle 中的函数可以返回表类型,但是这个表类型实际上是集合类型(与数组类似)。从 Oracle 9i 开始,提供了一个叫做"管道化表函数"来解决此

    2023-05-21
    141
  • redis 基础知识点汇总

    redis 基础知识点汇总前言 本文的目的是对 redis 的基本知识点做一个简单的 梳理,不会对全部内容详解展开讲解(部分内容在之前的文章有详细讲到)。 本文涉及的内容参考下面的大纲,另外版本的问题一般都会指出来。 正文 …

    2023-02-16
    143
  • 共享的注意事项及解决方法「建议收藏」

    共享的注意事项及解决方法「建议收藏」2018年,文件共享服务项目DropBox使西北大学在2年的时间内“浏览了与新项目文件夹有关的数据信息”——遮盖了1000所高校中的约四十万名客户。那么文件共享的注意事项及解决方法有哪些呢? 该类电…

    2023-04-11
    163

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注