MySQL源码分析—事务处理机制与批量提交策略
发布时间
阅读量:
阅读量
XA 两阶段提交
对于分布式事务处理而言,在其运行过程中需要对多个局部数据库执行读写操作。若要确保其一致性,则要求所有参与该全局事务T的节点必须在其最终结果上达成一致。X/Open组织提出了XA规范,并采用两阶段提交协议(Two-Phase Commit Protocol, 2PC),通过这一机制确保了一个全球事物T要么全部成功提交(Commit),要么全部失败终止。为了提升性能,并行联机查询可能会导致系统的不一致性。
提交协议
在全局事务 T 中担任事务协调角色的是 C(transaction coordinator)。当所有参与事务 T 的交易管理器(transaction manager)均完成通知后,C 将启动双重提交机制,在此过程中将采用准备阶段(prepare)和确认阶段(commit)两个步骤来实现数据持久化存储。
prepare 阶段
协调器 C 发布了一条 prepare 信息给执行节点 T。各节点的事务处理者接收到 prepare 信息后会进行评估:若允许本机构负责的事务 T 提交,则会将与T相关的日志全部清空,并将T的状态标记为preliminary;随后返回 ready 作为回应;若无法提交,则发出abort指令。
commit 阶段
当事务协调器 C 接收到所有节点响应 prepare 消息后进入 commi
全部评论 (0)
还没有任何评论哟~
