标准答案
- 事务提交不仅要让本地数据可恢复,还要确保复制或变更日志能够反映同一笔已提交业务变更。
- 若只提交引擎日志而复制日志缺失,主库有数据但副本和订阅方看不到;反过来则可能复制出未真正落地的变更。
- 准备阶段记录可判定的中间状态,提交阶段让两个日志都达到一致的完成状态,崩溃恢复时据此决定提交或回滚。
- 具体实现依赖数据库产品,应用层需要理解的是确认边界、失败语义与监控,而不是手写底层日志协议。
- 跨系统写入仍不能简单套用数据库内部两阶段提交,应优先考虑事务外发箱、幂等消费和补偿。
题目解析
两阶段提交解决的是同一数据库体系内多个持久化记录的一致确认,它本身会引入状态、恢复与性能成本。它不等价于让支付、库存、消息系统自动强一致。
生产上更重要的是观察复制延迟、日志空间、失败恢复和副本一致性。发生异常时必须有证据能判定一笔事务是否已经对外提交,不能依靠“看起来应该成功”。
常见误区
- 把数据库内部日志协调误当成通用分布式事务解决方案。
- 只监控主库写入成功,不监控复制日志和副本是否持续跟上。