SQL执行很慢的原因分析

sql执行很慢的时候可以大致分为两种情况:

一、大部分情况下正常,偶尔慢

   1.数据库刷新脏页

  • redolog写满:更新数据或者插入数据时,会先在内存中将相应的数据更新,并不会立刻持久化到磁盘中去,而是把更新记录存到redolog日志中去,待到空闲时,再通过redolog把最新数据同步到磁盘中去。所以当redolog写满的时候,就不会等到空闲时,而是暂停手中的活,去把数据同步到磁盘中,所以这个时候SQL就会执行的比较慢
  • 内存写满:如果一次查询的数据过多,查询的数据页并不在内存中,这时候就需要申请新的内存空间,而如果此时内存已满,就需要淘汰一部分内存数据页,如果是干净页就直接释放,如果是脏页就需要flush
  • 数据库认为空闲的时候:这时候系统不忙
  • 数据库正常关闭:内存脏页flush到磁盘上

    2.无法获取锁

二、数据量不变的情况下,一直都很慢

  1. 字段没有索引
  2. 有索引没用
  3. 索引没用上
  4. 数据库选错索引:通过区分度判断走索引的话反而扫描的行数很大而且索引要走两边,选择全表扫描
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值