樂觀並行控制

關聯式資料庫管理系統里,樂觀並行控制(又名「樂觀鎖」,Optimistic Concurrency Control,縮寫「OCC」)是一種並行控制的方法。它假設多使用者並行的交易在處理時不會彼此互相影響,各交易能夠在不產生鎖的情況下處理各自影響的那部分資料。在提交資料更新之前,每個交易會先檢查在該交易讀取資料後,有沒有其他交易又修改了該資料。如果其他交易有更新的話,正在提交的交易會進行回復。樂觀交易控制最早是由孔祥重(H.T.Kung)教授提出[1]

樂觀並行控制多數用於資料競爭(data race)不大、衝突較少的環境中,這種環境中,偶爾回復交易的成本會低於讀取資料時鎖定資料的成本,因此可以獲得比其他並行控制方法更高的吞吐量

樂觀並行控制的階段

編輯

樂觀並行控制的交易包括以下階段:[來源請求]

  • 讀取:交易將資料讀入,這時系統會給交易分派一個時間戳
  • 校驗:交易執行完畢後,進行提交。這時同步校驗所有交易,如果交易所讀取的資料在讀取之後又被其他交易修改,則產生衝突,交易被中斷(回復)。
  • 寫入:通過校驗階段後,將更新的資料寫入資料庫。

優點與不足

編輯

樂觀並行控制相信交易之間的資料競爭(data race)的概率是比較小的,因此儘可能直接做下去,直到提交的時候才去鎖定,所以不會產生任何鎖和死結。但如果直接簡單這麽做,還是有可能會遇到不可預期的結果,例如兩個交易都讀取了資料庫的某一行,經過修改以後寫回資料庫,這時就遇到了問題。

相關條目

編輯

參考文獻

編輯
  1. ^ H.T.Kung and J. Robinson (1981). "On Optimistic Methods for Concurrency Control". ACM Transactions on Database Systems.

外部連結

編輯
  1. MSDN - Optimistic Concurrency Control頁面存檔備份,存於網際網路檔案館
  2. On Optimistic Methods for Concurrency Control
  3. On optimistic concurrency control for real-time database systems