233 字
1 分钟
面试鸭-MySQL 事务的二阶段提交是什么?
MySQL事务的二阶段提交是什么?
是MySQL为了保证Redo log和binlog一致设计的一个机制。因为这两个机制一个属于InnoDB引擎独有一个属于Server层,如果写入过程中宕机,就可能出现数据不一致的问题。
两个阶段是这样的:
- prepare阶段:事务提交时,InnoDB先把修改写到Redo log中,然后把Redo log的状态设为prepare,表示准备好了但是没提交。
- commit阶段:Server层将操作写到binlog中,写入成功后再让InnoDB把Redo log的状态设为commit,事务提交成功。
如果在prepare阶段完成后崩溃,恢复时就看binlog是否有对应的操作记录,没有就进行事务回滚。 如果在commit阶段崩溃,看binlog是否有对应的操作记录,发现有就直接设redo log为commit表示提交成功。
问题
面试鸭-MySQL 事务的二阶段提交是什么?
http://www.shineacz.top/posts/面试鸭-mysql事务的二阶段提交是什么/