兩段鎖協定

兩段鎖協定是指每個事務的執行可以分為兩個階段:生長階段(加鎖階段)和衰退階段(解鎖階段)。

加鎖階段:在該階段可以進行加鎖操作。在對任何數據進行讀操作之前要申請並獲得S鎖,在進行寫操作之前要申請並獲得X鎖。加鎖不成功,則事務進入等待狀態,直到加鎖成功才繼續執行。

解鎖階段:當事務釋放了一個封鎖以後,事務進入解鎖階段,在該階段只能進行解鎖操作不能再進行加鎖操作。

兩段封鎖法可以這樣來實現:事務開始後就處於加鎖階段,一直到執行ROLLBACK和COMMIT之前都是加鎖階段。ROLLBACK和COMMIT使事務進入解鎖階段,即在ROLLBACK和COMMIT模組中DBMS釋放所有封鎖。

基本介紹

  • 中文名:兩段鎖協定
  • 組成:加鎖階段和解鎖階段
  • 簡介事務必須階段對數據項加鎖和解鎖
  • 前提:申請並獲得對該數據的封鎖
概念
兩段鎖協定是指所有事務必須分兩個階段對數據項加鎖和解鎖:
封鎖序列封鎖序列
1. 在對任何數據進行讀、寫操作之前,要申請並獲得對該數據的封鎖。
2. 每個事務中,所有的封鎖請求先於所有的解鎖請求。
例如事務T1遵守兩段鎖協定,其封鎖序列是:
Lock A, Read A, A:=A+100, Write A, Lock B, Unlock A, Read B, Unlock B, Commit;
可以證明,若並發執行的所有事務均遵守兩段鎖協定,則對這些事務的任何並發調度策略都是可串列化的。
另外要注意兩段鎖協定和防止死鎖的一次封鎖法的異同之處。一次封鎖法要求每個事務必須一次將所有要使用的數據全部加鎖,否則就不能繼續執行,因此一次封鎖法遵守兩段鎖協定;但是兩段鎖協定並不要求事務必須一次將所有要使用的數據全部加鎖,因此遵守兩段鎖協定的事務可能發生死鎖。

相關詞條

熱門詞條

聯絡我們