三級封鎖協議的區別

        鎖的類型:

        基本的封鎖類型有兩種:排它鎖(X鎖)和共享鎖(S鎖).所謂X鎖,是事務T對數據A加上X鎖時,只允許事務T讀取和修改數據A,...所謂S鎖,是事務T對數據A加上S鎖時,其他事務只能再對數據A加S鎖,而不能加X鎖,直到T釋放A上的S鎖。若事務T對數據對象A加了S鎖,則T就可以對A進行讀取,但不能進行更新(S鎖因此又稱爲讀鎖),在T釋放A上的S鎖以前,其他事務可以再對A加S鎖,但不能加X鎖,從而可以讀取A,但不能更新A.

  

        三級封鎖協議:

        在運用X鎖和S鎖對數據對象加鎖時,還需要約定一些規則 ,例如何時申請X鎖或S鎖、持鎖時間、何時釋放等。稱這些規則爲封鎖協議(Locking Protocol)。對封鎖方式規定不同的規則,就形成了各種不同的封鎖協議。

  
  一、一級封鎖協議
  
   一級封鎖協議是:事務T在修改數據R之前必須先對其加X鎖,直到事務結束才釋放。事務結束包括正常結束(COMMIT)和非正常結束(ROLLBACK)。
  
   一級封鎖協議可以防止丟失修改,並保證事務T是可恢復的。使用一級封鎖協議可以解決丟失修改問題。
  
   在一級封鎖協議中,如果僅僅是讀數據不對其進行修改,是不需要加鎖的,它不能保證可重複讀和不讀“髒”數據。
  
  二、二級封鎖協議
  
   二級封鎖協議是:一級封鎖協議加上事務T在讀取數據R之前必須先對其加S鎖,讀完後方可釋放S鎖。
  
   二級封鎖協議除防止了丟失修改,還可以進一步防止讀“髒”數據。但在二級封鎖協議中,由於讀完數據後即可釋放S鎖,所以它不能保證可重複讀。
  
  三、三級封鎖協議 
  
   三級封鎖協議是:一級封鎖協議加上事務T在讀取數據R之前必須先對其加S鎖,直到事務結束才釋放。
  
   三級封鎖協議除防止了丟失修改和不讀“髒”數據外,還進一步防止了不可重複讀。
  

   上述三級協議的主要區別在於什麼操作需要申請封鎖,以及何時釋放。


這個連接對併發和鎖介紹的不錯!

http://course.cug.edu.cn/cug/database/database.htm

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章