文章目录
binlog 的写入流程
事务执行过程中,binlog 首先会被写到 binlog cache 中;事务提交的时候,再讲binlog cache 写到 binlog 文件中。一个事务的 binlog 是原子的,无论多大都需要保证完整性。
系统为每个客户端线程分配一个 binlog cache,其大小由 binlog_cache_size 控制。如果binlog cache 超过阀值,就会临时持久化到磁盘。当事务提交的时候,再将 binlog cache 中完整的事务持久化到磁盘中,并清空 binlog cache。

从上面可以看出,每个客户端线程都有自己独立的 binlog cache,但是会共享一份 binlog files。
上面的 write 是指把binlog cache 写到文件系统的 page cache,并没有写入到磁盘中,因此速度较快。
fsync 是实际的写盘操作,占用磁盘的 IOPS。
write 和 fsync 的写入时机,是由sync_binlog 控制的:
- sync_binlog=0:每次事务提交都只 write,不 fsync;
- sync_binlog=1:每次事务提交都会fsync;
- sync_binlog=N(N>1):每次提交事务都会 write,累计N 个后再执行 fsync。<

最低0.47元/天 解锁文章
503

被折叠的 条评论
为什么被折叠?



