本文共 1136 字,大约阅读时间需要 3 分钟。
一.给leader进程带来了不公平
二.兼顾redo和binlog顺序的对应
三.事务redo与binlog的写流程与fsync时机(没有引进组提交时的流程)
四.为什么要组提交?(简单组提交下的弊病,硬件资源速度的不一致性,带来的优势)
将Binlog写入内存,(好像没有Binlog buffer的说法,直接写入内存,内存写入条带文件)。
binlog_group_commit_sync_delay 应该是用来控制leader进度的,也就是发车间隔时间。这个是导致leader不公平的主要原因。单位微妙。微妙级别的话,相对于刷盘的时间,leader的不公平看起来微乎其微。
sync_binlog的含义就变了,假定设为1000,表示的不是1000个事务后做一次fsync,而是1000个事务组。默认1的话就是,1个事务组提交一次fsync Binlog
也就是说,比如, 1-1000个事务,前面999个都没有sync,默认是sync成功的。第1000个事务时进行真正的binlog sync 。若中间挂了,没有sync成功,那么1-1000事务的binlog 都没有被记录在读写IO相对于内存的速度有很大差距的情况下,把单次离散写,合并成批量连续写。硬盘的寻道时间要比顺序写硬盘的时间要慢很多。尽量少寻道,也是一种思路
阿里月报 201501
官方手册
姜承尧
《Innodb存储引擎 P322》fb关于组提交的文章 发布时间:2010 年 10 月 7 日 周四 02:16
没有精力转载于:https://blog.51cto.com/l0vesql/2311534