use*_*220 7 database transactions 2phase-commit distributed-transactions
假设分布式事务中涉及的所有数据库都使用两阶段提交信号实现,它们已准备好提交并具有必要的锁定.协调器发出提交信号,所有数据库都执行它们的部分事务,但是一个SQL数据库由于编程监督而未能考虑这种可能性而遇到零除错误.由于协调员已经发信号通知每个人因为除零而发生的事情是什么?
usr*_*usr 7
第二个提交阶段通常不包含可能失败的用户代码.参与的资源管理者需要保证不会发生故障.如果违反此保证,协议不能提供任何保证.
两阶段提交尝试解决两个一般问题.这个问题没有完整的解决方案.TPC是近似值.
TPC失败的另一种方式是网络分区.某些资源管理器可能会执行最终提交,但有些可能无法接收该消息.同样,这个问题是无法解决的.即使重试也无法解决.
您甚至可以在现实条件下触发此问题:在压力测试中运行所有参与节点,并在任意点拉动网络电缆.很有可能您的分布式数据库现在不一致,因为一些提交消息丢失了非常不方便的时间.
归档时间:
13 年,11 月 前
查看次数:
771 次
最近记录:
13 年,10 月 前