doc: 阅读mysql BLGC文档

This commit is contained in:
asahi
2025-08-27 13:33:21 +08:00
parent 97990229c9
commit 2b2be0b6d9

View File

@@ -643,4 +643,16 @@ binlog机制mysql上层的和存储引擎无关而redo log机制是和存
上述stages位于binlog commit过程的内部并且不会造成其他影响。由于commit过程被拆分为了如下stages故而可以同时存在数个线程同时对事务进行处理这样会增加吞吐量。 上述stages位于binlog commit过程的内部并且不会造成其他影响。由于commit过程被拆分为了如下stages故而可以同时存在数个线程同时对事务进行处理这样会增加吞吐量。
对于每个stage都存在一个queuesession在queue中排队等待被处理。如果一个session被注册到了空的queue那么其将被认为是stage leader如果session被注册时queue不为空那么其将作为stage follower。stage leader将会将queue中所有的threads移出stage并且将leader和所有的followers注册到下个stage。 对于每个stage都存在一个queuesession在queue中排队等待被处理。如果一个session被注册到了空的queue那么其将被认为是stage leader如果session被注册时queue不为空那么其将作为stage follower。stage leader将会将queue中所有的threads经过stage处理并且将其注册到下一个stage并且将leader和所有的followers注册到下个stage。
followers会被移动并且等待leader通知整个commit都执行完成。
leader可能会注册到一个非空queue中即leader可以决定成为一个follower但是follower永远不会变成leader。
当leader进入到stage后会一次性将queue抓取并依次处理queue中排队的session。当queue被抓取后当leader在处理old queue时其余的session又可以被注册到stage。
- `Flush Stage` 在flush stage所有注册到queue的session都会将其cache写入到binlog中。
- `sync stage`在sync stage会根据`sync_binlog`的设置将binary log同步到磁盘中。如果`sync_binlog`值为1所有被flushed的session都会被同步到磁盘中
- `commit stage`在commit stage所有session将会按照其register的顺序在engine中进行提交该步骤由stage leader完成。由于在commit procedure中每个stage都保留了顺序那么binlog中写入事务的顺序和引擎中事务的提交顺序是一致的。