樂觀并行控制

本页使用了标题或全文手工转换,现处于澳门繁体模式
求聞百科,共筆求聞
於 2022年8月17日 (三) 23:18 由 小仓由菜對話 | 貢獻 所做的修訂 (我来啦, replaced: 務 → 务 (3), 關 → 关 (4), 來 → 来, 庫 → 库 (4), 並 → 并 (4), 聯 → 联 (4), 統 → 统 (4), 資 → 资 (8), 復 → 复, 請 → 请, 滾 → 滚 (3))
(差異) ←上個修訂 | 最新修訂 (差異) | 下個修訂→ (差異)

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

樂觀并行控制多數用於资料爭用不大、衝突較少的環境中,這種環境中,偶爾回滚事务的成本會低於讀取资料時鎖定资料的成本,因此可以獲得比其他并行控制方法更高的吞吐量

樂觀并行控制的階段

樂觀并行控制的事务包括以下階段:[來源請求]

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

優點與不足

參見:并行控制

樂觀并行控制相信事务之間的资料競爭(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