我需要在應用程序啓動過程中將我的用戶表與存儲庫(另一個數據庫)同步。我有兩個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