DBMS基於鎖的協議

在這種類型的協議中,任何事務在獲取適當的鎖之前都無法讀取或寫入數據。 鎖有兩種類型:

1.共用鎖:

  • 它也稱為只讀鎖。 在共用鎖中,資料項目只能由事務讀取。
  • 它可以在事務之間共用,因為當事務持有鎖時,它無法更新資料項目上的數據。

2.獨佔鎖:

  • 在獨佔鎖中,資料項目既可以是讀取,也可以是事務寫入。
  • 這種鎖是獨佔的,在此鎖中,多個事務不會同時修改相同的數據。

有四種類型的鎖定協議可用:

1. 簡單的鎖定協議

這是在事務時鎖定數據的最簡單方法。簡單的基於鎖的協議允許所有事務在插入或刪除或更新數據之前鎖定數據。 它將在完成交易後解鎖資料項目。

2.預先聲明鎖定協議

  • 預先聲明鎖定協議評估事務以列出它們需要鎖定的所有資料項目。
  • 在開始執行事務之前,它會請求DBMS對所有這些資料項目進行所有鎖定。
  • 如果授予所有鎖定,則此協議允許事務開始。 當事務完成後,它會釋放所有鎖。
  • 如果未授予所有鎖定,則此協議允許事務回滾並等待,直到授予所有鎖定。

3.兩階段鎖定(2PL)

  • 兩階段鎖定協議將事務的執行階段分為三個部分。
  • 在第一部分中,當事務的執行開始時,它尋求對它所需的鎖的許可。
  • 在第二部分中,事務獲取所有鎖。 一旦事務發佈第一個鎖,第三個階段就會啟動。
  • 在第三階段,事務不能要求任何新鎖。它只釋放獲得的鎖。

2PL有兩個階段:

增長階段: 在增長階段,事務可以獲取資料項目的新鎖,但是不能釋放任何鎖。
縮小階段: 在縮小階段,可以釋放事務所持有的現有鎖,但不能獲取新鎖。

在下面的示例中,如果允許鎖定轉換,則可能發生以下階段:

  • 在生長階段允許升級鎖(從S(a)到X(a))。
  • 鎖定降級(從X(a)到S(a))必須在縮小階段完成。

示例

以下方式顯示瞭解鎖和鎖定如何使用2-PL。

事務T1:

  • 成長階段:從步驟1-3開始
  • 收縮階段:從步驟5-7開始
  • 鎖定點:第3點

事務T2:

  • 成長階段:從步驟2-6開始
  • 收縮階段:從步驟8-9開始
  • 鎖定點:第6點

4. 嚴格階段鎖定(Strict-2PL)

  • Strict-2PL的第一階段類似於2PL。 在第一階段,在獲取所有鎖之後,事務繼續正常執行。
  • 2PL和嚴格2PL之間的唯一區別是Strict-2PL在使用後不釋放鎖。
  • Strict-2PL等待整個事務提交,然後一次釋放所有鎖。
  • Strict-2PL協議沒有鎖定釋放的縮小階段。

它沒有像2PL那樣的級聯中止。


上一篇: DBMS併發控制 下一篇: DBMS時間戳順序協議