【发布时间】:2011-10-10 14:52:39
【问题描述】:
我需要在应用程序启动期间将我的用户表与存储库(另一个数据库)同步。我有两个带有 Apache mod_jk 的 Tomcat 节点。因此,当我重新启动它们时,我会进行双重插入和双重更新。这好像是: T1开始 T2开始 T1 读取数据 T2读取数据 T1修改数据 T2修改相同数据 T1 插入 T2 刀片 T1 提交 T2 提交
当 T1 修改数据然后 T2 修改相同的数据时,我丢失了更新。 当然,我在插入操作期间有重复。 我应该如何进行同步?
- 我想我可以使用“select * for update”(例如)锁定所有表并执行两次同步。一个满的,一个空的。
- 我可以为此创建特殊表并将 STATUS 列放在那里。当一个节点启动时,它会执行 STATUS 字段的 SELECT FOR UPDATE 并将其更改为“RUNNING”。当另一个事务读取 STATUS 时,如果它设置为“RUNNING”,它不会执行同步。
最好的解决方案是什么?任何其他建议。 谢谢!
【问题讨论】:
标签: oracle hibernate tomcat synchronization locking