我需要在应用程序启动过程中将我的用户表与存储库(另一个数据库)同步。我有两个Apache mod_jk的Tomcat节点。所以当我重新启动它们时,我会进行双重插入和双重更新。这似乎是: T1开始 T2开始 T1读 T2读取数据 T1修改数据 T2修改相同的数据的数据 T1插入 T2刀片 T1提交 T2提交Java Hibernate + Oracle 11.2锁定
当T1修改数据,然后T2修改我丢失更新的相同数据。 当然,我在插入操作过程中有重复。 我应该如何做同步?
- 我想我可以使用“select * for update”(例如)锁定所有表并执行两个同步。一个满了,另一个空着。
- 我可以为此创建特殊表并将STATUS柱放在那里。当一个节点启动时,它执行STATUS字段的SELECT FOR UPDATE并将其更改为“RUNNING”。当另一个事务读取STATUS时,如果它设置为“RUNNING”,它将不执行同步。
什么是最好的解决方案?任何其他建议。 谢谢!
谢谢!但我真的需要在启动时做,而不是按需。该业务不想推“同步”按钮))) – Nick