阿摩線上測驗 登入

申論題資訊

試卷:108年 - 108 臺灣菸酒股份有限公司_從業職員及從業評價職位人員甄試_從業職員/資訊安全、系統管理:資料庫管理#74343
科目:資料庫管理與運用
年份:108年
排序:0

申論題內容

第三題: 何謂兩階段鎖定(two-phase locking)?其主要目的為何?【25 分】

詳解 (共 1 筆)

詳解 提供者:hchungw
 

兩階段鎖定 (Two-Phase Locking)

定義: 兩階段鎖定(Two-Phase Locking, 2PL)是一種確保資料庫交易符合隔離性和一致性的並發控制機制。該機制將交易的鎖定過程分為兩個階段:增長階段(Growing Phase)和收縮階段(Shrinking Phase)。

階段描述:

  1. 增長階段 (Growing Phase)

    • 在這個階段,交易可以獲取鎖(如讀鎖和寫鎖),但不能釋放任何鎖。
    • 交易在需要訪問資料時,不斷請求並獲取相應的鎖。
  2. 收縮階段 (Shrinking Phase)

    • 一旦交易釋放了第一個鎖,它進入收縮階段。在這個階段,交易只能釋放鎖,不能再獲取任何新的鎖。
    • 交易在完成所有資料操作後,開始逐步釋放它持有的所有鎖。

主要目的

兩階段鎖定的主要目的是確保交易的隔離性,從而避免因為並發操作而導致的數據不一致性和衝突。具體目標包括:

  1. 避免髒讀 (Dirty Read)

    • 保證一個交易讀取的數據是由已經提交的其他交易生成的,而不是讀取到尚未提交的修改。
  2. 避免不可重複讀 (Non-Repeatable Read)

    • 保證在同一交易內多次讀取同一資料,該資料值在此期間不會發生變化。
  3. 避免幻影讀 (Phantom Read)

    • 保證在同一交易內多次查詢數據庫時,插入或刪除的行數不會改變,即查詢結果集不會發生變化。

如何實現兩階段鎖定

在實現兩階段鎖定時,需要遵循以下步驟:

  1. 增長階段

    • 當交易需要訪問某資源時,請求相應的鎖。這個過程可以持續到交易訪問完所有需要的資源為止。
    • 鎖請求成功後,交易可以進行讀取或修改操作。
  2. 鎖點(Lock Point)

    • 交易在獲取最後一個鎖後,進入鎖點。鎖點是交易開始釋放鎖的時刻,也是交易進入收縮階段的標誌。
  3. 收縮階段

    • 當交易不再需要訪問任何新的資源時,開始逐步釋放已獲取的鎖。
    • 交易在釋放所有鎖後完成。

範例

假設有兩個交易 T1 和 T2,它們訪問相同的資料項 A 和 B:

  • 交易 T1

    1. 獲取 A 的寫鎖。
    2. 獲取 B 的讀鎖。
    3. 操作 A 和 B。
    4. 釋放 B 的讀鎖。
    5. 釋放 A 的寫鎖。
  • 交易 T2

    1. 嘗試獲取 A 的讀鎖(必須等待 T1 釋放 A 的寫鎖)。
    2. 獲取 A 的讀鎖。
    3. 獲取 B 的寫鎖。
    4. 操作 A 和 B。
    5. 釋放 B 的寫鎖。
    6. 釋放 A 的讀鎖。

這樣,兩階段鎖定確保了 T1 和 T2 在操作過程中的隔離性,避免數據不一致問題。