MST

星途 面试题库

面试题:MariaDB中事务两阶段提交机制的基本步骤是什么

请详细阐述MariaDB中事务两阶段提交机制的各个基本步骤及其作用。
11.3万 热度难度
数据库MariaDB

知识考点

AI 面试

面试题答案

一键面试

第一阶段:准备阶段(Prepare Phase)

  1. 步骤:当事务开始后,数据库会记录所有事务操作的日志(包括redo日志和undo日志)。redo日志用于崩溃恢复,确保已提交事务的修改持久化;undo日志用于回滚未提交事务。然后,数据库向所有参与该事务的节点发送PREPARE消息。
  2. 作用:此阶段让各个节点准备好提交事务,节点在收到PREPARE消息后,会检查自身是否能够完成事务提交操作,例如检查资源是否充足、是否存在锁冲突等。如果节点可以准备好提交,就会将事务相关数据写入日志并标记为PREPARED状态,然后向协调者(通常是发起事务的节点)返回YES响应;若无法准备,则返回NO响应。这个过程确保了所有节点对于事务提交达成初步一致,为最终提交做准备。

第二阶段:提交阶段(Commit Phase)

  1. 步骤:如果协调者收到所有节点的YES响应,表明所有节点都准备好提交事务,协调者会向所有节点发送COMMIT消息。各节点收到COMMIT消息后,将事务正式提交,将redo日志持久化到磁盘,完成数据修改的永久性存储,并释放事务占用的资源。如果协调者收到任何一个节点的NO响应,表明有节点无法准备好提交事务,协调者会向所有节点发送ROLLBACK消息。各节点收到ROLLBACK消息后,根据undo日志回滚事务,撤销事务执行过程中对数据的修改,并释放事务占用的资源。
  2. 作用:提交阶段根据第一阶段的准备结果决定是正式提交事务还是回滚事务。COMMIT操作确保事务对数据的修改永久性生效,保证数据的一致性和完整性;ROLLBACK操作则确保事务未提交时数据不会被错误修改,维护数据的一致性状态,避免部分节点提交而部分节点未提交导致的数据不一致问题。