MySQL 在写BinLog文件时,会按照如下规则进行写操作:
1) 根据记录的模式 ( Row 、Statement 和 Mixed ) 和操作 ( create 、drop 、alter 、in sert、update 等)触发事件生成日志事件(事件触发执行机制)。
2) 将事务执行过程中产生的 日志事件写入相应的缓 冲区。注意, 这里是每个事务线程都有一个缓冲区。日志事件保存在数据结构 bin log_cache_mngr 中, 这个数据结构中有两个缓冲区 : 一个是 stmt—cache , 用于存放不支持事务的信息; 另一个是 trx—cache , 用于存放支持事务的信息。
3) 事务在 Commit 阶段会将产生的日志事件写入磁盘的 BinLog 文件中。因为不同的事务会以串行的方式将 日志事件写入 BinLog 文件中, 所以一个事务中包含的日志事件信息在 BinLog 文件中是连续的 ,中间不会插入其他事务的B志事件。
资料来源:《深入理解分布式事务:原理与实战》,下载链接为:https://developer.aliyun.com/topic/download?id=8201。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。