MySQL8.0: 重新设计的日志子系统

  1. 云栖社区>
  2. 阿里云数据库ApsaraDB>
  3. 博客>
  4. 正文

MySQL8.0: 重新设计的日志子系统

zhaiwx_yinfeng 2018-05-12 16:44:33 浏览7035
展开阅读全文

Update

2018/12/14: 增加log write ahead的内容
2018/6/19 官方发表了一篇博客介绍内核实现:
MySQL 8.0: New Lock free, scalable WAL design

背景

当前几乎所有的关系数据库都采用日志先行的方式,也就是所谓WRITE-AFTER-LOG(WAL),这是因为日志通常是顺序写的,并且写入量相比修改的数据通常要小很多。通过redo log来确保提交的事务必然具有持久性。(目前也有另外一种理论叫做Write Ahead Log, 由CMU的教授提出,主要适用于Nvme,这里在CMU的peloton项目里有个介绍

然而日志由于要保证顺序性,需要锁来保护所有日志拷贝到buffer都是有序的,引入了一个严重的锁竞争点,特别是在多核场景下,这里的竞争会非常明显,无法发挥出多核

网友评论

登录后评论
0/500
评论
zhaiwx_yinfeng
+ 关注
所属云栖号: 阿里云数据库ApsaraDB