9.1.如何会发生冲突

节点间冲突引起的可能不会发生,如果所涉及的所有交易记录在同一节点上同时发生的事件序列。因为节点只有在事务提交后交换更改,每笔交易是在它上犯下,但不是会有效,如果在做了其他工作平均时间的另一个节点上运行的节点上单独有效。因为 BDR 基本上适用重播事务上的其他节点,重播操作可能会失败如果事务正在应用和决心在接收节点的事务之间的冲突。

当在单个节点上运行的所有交易记录时,不会发生大多数冲突的原因是,PostgreSQL 间交易沟通机制,以防止它唯一索引、 序列、 行和关系锁定,可序列化依赖项跟踪等。所有这些机制都是交易,以防止不良并发问题之间进行通信的方式。

BDR 没有一个分布式的事务管理器或锁管理器。为什么它执行与延迟和网络分区的一部分。结果,所以在不同节点上的交易执行完全在彼此隔绝。尽管一般认为"更多的隔离是好的"你实际上需要减少隔离,以防止冲突。

results matching ""

    No results matching ""