2012-07-31 167 views
0

基本上是我們的用戶配置算法並像JDBC/MySQL查詢和更新的交易

-query新用戶 - 更新數據庫,以顯示你有用戶

我想知道如何鎖定進程的其他實例在已經啓動時執行「讀取」步驟的能力。所以它比一個典型的事務更積極一些,因爲它需要一個讀取鎖,當然不相關的進程應該能夠讀取而不受鎖的影響。

回答

1

您可以立即運行UPDATE查詢以「竊取」當前服務器的所有非活動用戶。

由於各個UPDATE查詢總是原子的,這將確保每個用戶只能被一個服務器抓取。

由於MySQL不允許您從UPDATE返回更新的行,因此您需要添加一個標識符列來告訴您哪些行被「盜取」。
每次供應用戶時,選擇一個GUID,在UPDATE語句中將標識符列設置爲該GUID,然後選擇行中仍然具有該GUID的行。

+0

這實際上解決了這個問題 - 我只是因爲我很想了解如何使用MySQL事務相關功能來解決這個問題而感到好奇。 – djechlin 2012-07-31 17:26:10