BLGC(Binary Log Group Commit)

redo log prepare: write (写入):事务准备提交时,InnoDB 引擎首先将 Redo Log 的 Prepare 记录写入到操作系统的 Page Cache(文件缓存)中。
binlog : write (写入):MySQL Server 层将 Binlog 记录也写入到操作系统的 Page Cache 中。
redo log prepare: fsync (刷盘):这个刷盘动作被推迟了。在旧版本的 MySQL 中,这一步会在步骤 1 之后立即执行。但在 BLGC 优化后,它被延迟到了这里,并且与下一步合并了。
binlog : fsync (刷盘):这是最关键的一步。BLGC 机制会凑齐一组事务,然后发起一次昂贵的 fsync 调用,目标是将 Binlog 刷入物理磁盘。
- 当操作系统执行这次 fsync 时,它会把当前 Page Cache 里的所有脏数据都刷到磁盘上。因此,步骤 1 中写入的 Redo Log Prepare 记录(也就是步骤 3 的内容),会顺便被这一次 fsync 带入物理磁盘。
- 通过这一次物理 I/O,同时完成了 Binlog 的持久化和 Redo Log Prepare 的持久化。
redo log commit: write (写入):Binlog 刷盘成功后,事务就算成功了。然后 InnoDB 引擎在内存中写入一个简短的 Commit 标记,完成整个提交过程。这一步通常不需要立即 fsync。