【MySQL】InnoDB存储引擎关键特性之——Insert Buffer

目录

问题背景

解决方案

使用条件:

存在问题:

升级:

内部实现:

Insert Buffer Bitmap

合并过程


问题背景

在Innodb存储引擎中,主键是行唯一标识符,并且对数据的插入和读取是按页进行。行记录按主键顺序插入效率会非常高,因此插入聚集索引一般是磁盘的顺序插入,不需要随机读取。

如果表存在主键a(自动增长),对a列的插入NULL,页中数据都是按a的值顺序存放,则不需要随机读取另一个页的记录,因此效率很高。

不是所有的主键插入都是有序的,例如主键是uuid这种

但对于非聚集索引,即辅助索引,在对非聚集索引叶子节点进行插入操作时, 则需要随机访问非聚集索引页,从而导致性能下降。

解决方案

innodb引入insert buffer,来解决上述问题,对于非聚集索引的插入操作,不是每一次直接插入到索引页中,而是先判断插入的非聚集索引页是否在缓冲池中,若在,则直接插入;不在,则先放导一个Insert Buffer对象中,(假装已经插入)。然后以一定的频率将Insert Buffer和辅助索引叶子节点进行合并操作,这时通过合并多个插入到一个操作中(这些插入都在一个页中),提高插入性能。

使用条件:

  1. 索引是辅助索引(非聚集索引&#x
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值