数据库sql执行慢

本文探讨了SQL语句执行偶尔慢和一直慢的可能原因。对于偶尔出现的慢速,可能是由于数据库刷新脏页、锁等待或内存不足。而数据量不变但持续慢的情况,则应考虑SQL语句优化,如未使用索引或选择了错误的索引。了解这些因素有助于提升数据库性能。
摘要由CSDN通过智能技术生成

关于sql语句执行很慢的原因

  • 大部分时间是正常的 ,只有偶尔会出现很慢的状态
  • 在数据量不变 的状态下,这条sql语句一直执行的很慢

下面针对这两种情况,我们来具体分析一下

  • 针对偶尔很慢的状态
    首先我觉得这条sql语句本身没有什么问题,而是其他原因导致了很慢,那会是什么样的原因呢?
    1.数据库刷新脏页
    当我们插入 一条数据或者更新一条数据的 时候,我们知道数据库会在内存中将相应的数据更新,但在更新之后,这些更新的字段不会马上同步持久化到磁盘中,而是把这些更新的记录写到redo log日记中去,等到有空的时候,通过redo log里的 日记把最新的数据同步到磁盘中。
    不过redo log中是有限的 ,我们如果数据库一直很忙,一直在更新频繁,那么很快就会把日记写满,这时候没法等空闲的 时候同步到磁盘中去,而是会全身心的同步磁盘,这样可能会导致我们平时的sql语句突然很慢
    2.拿不到锁
    这个就比较好理解了,我们执行这条语句的时候,刚好涉及到的表,别人在用,并且加上了 锁,这样我们就拿不到锁,只能慢慢等待别人释放锁
    如果要判断是否真的在等待锁了,我们可以通过show processlish来查看当时的状态。
    3.内存不够用了

  • 针对一直很慢的状态
    如果针对数据量不变的情况下,sql语句执行一直很慢,那么就得好好考虑sql语句的书写 了 。
    下面分析哪些条件可能会导致sql语句的执行很不理想
    1.没有用到索引
    例如 改字段没有用索引,由于对该字段进行运算,函数 ,没有用到索引
    2.数据库选错了 索引

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值