InnoDB关键特性

Innodb关键特性

插入缓冲

Insert Buffer

概念:对于非聚集索引的插入或更新操作,先判断插入的非聚集索引页是否在缓冲池中,在则直接插入。不在,先放入到insert buffer对象中,在一定情况下对insert buffer和辅助索引页子节点merge操作。 (可将多个插入合并到一个操作中,大大提高了对非聚集索引的插入性能)

使用需要满足2个条件:

  • 索引是辅助索引
  • 索引不是唯一的 (因为insert buffer不查找索引页判断插入记录唯一性)

通过show engine innodb status查看Innodb引擎状态,找到INSERT BUFFER AND ADAPTIVE HASH INDEX

-------------------------------------
INSERT BUFFER AND ADAPTIVE HASH INDEX
-------------------------------------
Ibuf: size 1, free list len 0, seg size 2, 0 merges
merged operations:
 insert 0, delete mark 0, delete 0
discarded operations:
 insert 0, delete mark 0, delete 0
Hash table size 138389, node heap has 0 buffer(s)
Hash table size 138389, node heap has 1 buffer(s)
Hash table size 138389, node heap has 0 buffer(s)
Hash table size 138389, node heap has 1 buffer(s)
Hash table size 138389, node heap has 1 buffer(s)
Hash table size 138389, node heap has 1 buffer(s)
Hash table size 138389, node heap has 1 buffer(s)
Hash table size 138389, node heap has 76 buffer(s)
0.00 hash searches/s, 0.00 non-hash searches/s
---

change buffer

Innodb可对DML操作进行缓冲,包括:INSERT、DELETE、UPDATE,对应insert bufferdelete bufferpurge buffer

适用对象是:非唯一的辅助索引;

参数innodb_change_buffering可设置缓冲类型:insert、delete、purges、changes、all等等;

对一条记录的UPDATE过程:

  • 先将记录标记已删除 (对应delete buffer,状态的delete mark)
  • 真正删除记录 (对应purge buffer,状态的delete)

两次写

doublewrite用于提升Innodb的数据页可靠性。

在应用重做日志前,用户需要一个页的副本,当写入失效时,先通过页的副本还原该页,再进行重做,即doublewrite;

写过程:在对缓冲池刷脏页时,不是直接写磁盘,而是将脏页复制到内存中的doublewrite buffer,之后doublewrite buffer分2次,每次1MB顺序写入共享表空间的物理磁盘上,最后同步磁盘。

自适应哈希索引

Innodb会监控表上个索引页的查询,如果观察到建立哈希索引可以提升性能,Innodb会自己建立哈希索引,即自适应哈希索引(Adaptive Hash Index,AHI);

使用要求:

  • 等值查询
  • 以该模式访问100次
  • 页通过该模式访问了N次,N=页中记录/16

异步IO

AIO,用户发出一个IO请求后,可直接发下一个IO请求,不用等待响应。AIO还可将多个IO请求merge为1个IO,提高了IOPS性能;

刷新邻接页

刷脏页时,Innodb检测该页所在区(extent)的所有页,如果是脏页,一并刷新。固态硬盘已经有很强的IO能力,可关闭该功能;

测试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卷福同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值