显然只有行的新值在更新时在节点之间发送。那么怎么会有可检测的冲突呢?节点 A 从节点 B 接收更新,从节点 C 接收不同的更新。A 怎么知道发生了冲突?B 和 C 更新不是以某种明确定义的顺序进行的?
“last-update-wins”是什么意思?更新有时间戳吗?在哪种情况下它依赖于同步时钟?或者它只是意味着最后一次到达节点 A 的更新会获胜?
概括
Last Update Wins 意味着基于提交时间(需要相当同步的时钟),而不是节点看到更新的时间。所以应该是全局一致的。
没有任何可检测的更新/更新冲突(约束违规除外)。如果是的话,他们将很难解决。
冲突解决是逐行的,而不是逐个事务的。另见http://sdf.org/~riley/blog/2016/01/04/is-bi-directional-replication-bdr-in-postgres-transactional/