二級封鎖協議
㈠ 以下是我對三級封鎖協議以及在解決數據的不一致性方面的理解,不知道對不對
你的理解是正確的。另外,正是由於丟失更新的問題太過嚴重,任何用戶都不可能版接受,所以權資料庫廠商在製作資料庫管理系統軟體時已經內嵌包含了一級封鎖協議,也就是說,目前主流的資料庫產品不做任何設置,也都不會出現丟失更新現象。其他問題還需要在資料庫中進行設置加以解決。
㈡ 關於資料庫封鎖協議,求解答謝謝!
資料庫的三級封鎖協議
資料庫的三級封鎖協議
封鎖是實現並發控制的一個非常重要的技術。所謂封鎖就是事務T在對某個數據對象例如表、記錄等操作之前,先向系統發出請求,對其加鎖。加鎖後事務T就對該 數據對象有了一定的控制,在事務T釋放它的鎖之前,其它的事務不能更新此數據對象。 基本的封鎖類型有兩種:排它鎖(Exclusive locks 簡記為X鎖)和共享鎖(Share locks 簡記為S鎖)。
排它鎖又稱為寫鎖。若事務T對數據對象A加上X鎖,則只允許T讀取和修改A,其它任何事務都不能再對A加任何類型的鎖,直到T釋放A上的鎖。這就保證了其它事務在T釋放A上的鎖之前不能再讀取和修改A。
共享鎖又稱為讀鎖。若事務T對數據對象A加上S鎖,則其它事務只能再對A加S鎖,而不能加X鎖,直到T釋放A上的S鎖。這就保證了其它事務可以讀A,但在T釋放A上的S鎖之前不能對A做任何修改。
在 運用X鎖和S鎖這兩種基本封鎖,對數據對象加鎖時,還需要約定一些規則,例如應何時申請X鎖或S鎖、持鎖時間、何時釋放等。我們稱這些規則為封鎖協議 (Locking Protocol)。對封鎖方式規定不同的規則,就形成了各種不同的封鎖協議。下面介紹三級封鎖協議。三級封鎖協議分別在不同程度上解決了丟失的修改、不 可重復讀和讀"臟"數據等不一致性問題,為並發操作的正確調度提供一定的保證。下面只給出三級封鎖協議的定義,不再做過多探討。
1 級封鎖協議是:事務T在修改數據R之前必須先對其加X鎖,直到事務結束才釋放。事務結束包括正常結束(COMMIT)和非正常結束(ROLLBACK)。 1級封鎖協議可防止丟失修改,並保證事務T是可恢復的。在1級封鎖協議中,如果僅僅是讀數據不對其進行修改,是不需要加鎖的,所以它不能保證可重復讀和不 讀"臟"數據。
2級封鎖協議是:1級封鎖協議加上事務T在讀取數據R之前必須先對其加S鎖,讀完後即可釋放S鎖。2級封鎖協議除防止了丟失修改,還可進一步防止讀"臟"數據。
3級封鎖協議是:1級封鎖協議加上事務T在讀取數據R之前必須先對其加S鎖,直到事務結束才釋放。3級封鎖協議除防止了丟失修改和不讀'臟'數據外,還進一步防止了不可重復讀。
執行了封鎖協議之後,就可以克服資料庫操作中的數據不一致所引起的問題。
由於本人技術有限,有不足之處,請指出,謝謝!!!歡迎評論。。。
㈢ 二級協議是什麼意思
在關系資料庫中提到二級封鎖協議與三級封鎖協議,這兩條協議很相似專。二級封鎖協議是:一級屬封鎖協議加上事務T在讀取數據R之前必須先對其加S鎖,讀完後即可釋放S鎖。三級封鎖協議是:一級封鎖協議加上事務T在讀取數據R之前必須先對其加S鎖,直到事務結束才釋放。... 在關系資料庫中提到二級封鎖協議與三級封鎖協議,這兩條協議很相似。二級封鎖協議是:一級封鎖協議加上事務T在讀取數據R之前必須先對其加S鎖,讀完後即可釋放S鎖。三級封鎖協議是:一級封鎖協議加上事務T在讀取數據R之前必須先對其加S鎖,直到事務結束才釋放。
㈣ 資料庫中三級封鎖協議與兩段鎖協議有區別嗎
區別如下:
1、過程不同
三級封鎖協議是一部完成封鎖的,而後者卻要分為兩個階段,耗費時間
2、含義不同
兩段鎖協議是指每個事務的執行可以分為兩個階段:生長階段(加鎖階段)和衰退階段(解鎖階段),三級加鎖協議也稱為三級封鎖協議,是為了保證正確的調度事務的並發操作,事務在對資料庫對象加鎖,解鎖是必須遵守的一種規則.在運用X鎖和S鎖對數據對象加鎖時,還需要約定一些規則
3、功能不同
三級封鎖協議除防止了丟失修改和不讀「臟」數據外,還進一步防止了不可重復讀。後者只是對事務進行時的封鎖
(4)二級封鎖協議擴展閱讀:
一、一級封鎖協議
一級封鎖協議是:事務T在修改數據R之前必須先對其加X鎖,直到事務結束才釋放。事務結束包括正常結束(COMMIT)和非正常結束(ROLLBACK)。
一級封鎖協議可以防止丟失修改,並保證事務T是可恢復的。使用一級封鎖協議可以解決丟失修改問題。
在一級封鎖協議中,如果僅僅是讀數據不對其進行修改,是不需要加鎖的,它不能保證可重復讀和不讀「臟」數據。
二、二級封鎖協議
二級封鎖協議是:一級封鎖協議加上事務T在讀取數據R之前必須先對其加S鎖,讀完後方可釋放S鎖。
二級封鎖協議除防止了丟失修改,還可以進一步防止讀「臟」數據。但在二級封鎖協議中,由於讀完數據後即可釋放S鎖,所以它不能保證可重復讀。
三、三級封鎖協議
三級封鎖協議是:一級封鎖協議加上事務T在讀取數據R之前必須先對其加S鎖,直到事務結束才釋放。
三級封鎖協議除防止了丟失修改和不讀「臟」數據外,還進一步防止了不可重復讀
㈤ 什麼是三級封鎖協議
在運用X鎖和S鎖對數據對象加鎖時,還需要約定一些規則 ,例如何時申請X鎖或S鎖、持鎖時間、何時釋放等。稱這些規則為封鎖協議(Locking Protocol)。對封鎖方式規定不同的規則,就形成了各種不同的封鎖協議。
一、一級封鎖協議
一級封鎖協議是:事務T在修改數據R之前必須先對其加X鎖,直到事務結束才釋放。事務結束包括正常結束(COMMIT)和非正常結束(ROLLBACK)。
一級封鎖協議可以防止丟失修改,並保證事務T是可恢復的。使用一級封鎖協議可以解決丟失修改問題。
在一級封鎖協議中,如果僅僅是讀數據不對其進行修改,是不需要加鎖的,它不能保證可重復讀和不讀「臟」數據。
二、二級封鎖協議
二級封鎖協議是:一級封鎖協議加上事務T在讀取數據R之前必須先對其加S鎖,讀完後方可釋放S鎖。
二級封鎖協議除防止了丟失修改,還可以進一步防止讀「臟」數據。但在二級封鎖協議中,由於讀完數據後即可釋放S鎖,所以它不能保證可重復讀。
三、三級封鎖協議
三級封鎖協議是:一級封鎖協議加上事務T在讀取數據R之前必須先對其加S鎖,直到事務結束才釋放。
三級封鎖協議除防止了丟失修改和不讀「臟」數據外,還進一步防止了不可重復讀。
上述三級協議的主要區別在於什麼操作需要申請封鎖,以及何時釋放。
㈥ 遵守兩階段封鎖協議的並發事物的所有鎖一定要到事物提交之後才解鎖
是的,遵守兩段封鎖協議的並發事物的鎖分為兩個階段:擴張階段,對該事務所需要的數據全部加鎖,該過程不允許解鎖:收縮階段:當該事務運行完成以後,對事物運行過程中所加的所,一一解開,該過程不想允許加鎖
㈦ 資料庫中封鎖協議名詞解釋
一級封鎖協議: 事務T在修改數據R之前必須先對其加X鎖, 直到事務結束才釋放。
但是如果只回是讀數據,不需答加鎖,因此會造成讀臟數據的情況
二級封鎖協議: 一級封鎖協議加上事務T在讀取數據R之前必須先對其加S鎖, 讀完後即可釋放²可防止讀臟數據, 丟失修改不能保證可重復讀!
㈧ 試述三級封鎖協議各解決了並發調度中的什麼問題
三級加鎖協議也稱為三級封鎖協議,是為了保證正確的調度事務的並發操作,事務在對數據內庫容對象加鎖,解鎖是必須遵守的一種規則.在運用X鎖和S鎖對數據對象加鎖時,還需要約定一些規則 ,例如何時申請X鎖或S鎖、持鎖時間、何時釋放等。稱這些規則為封鎖協議(Locking Protocol)。對封鎖方式規定不同的規則,就形成了各種不同的封鎖協議。
㈨ 二級封鎖協議與三級封鎖協議的區別
1、在對於封鎖鎖的釋放上有所不同。
二級封鎖協議:一級封鎖協議加上事務T在讀取數據R之前必須先對其加S鎖,讀完後方可釋放S鎖。
三級封鎖協議:一級封鎖協議加上事務T在讀取數據R之前必須先對其加S鎖,直到事務結束才釋放。
2、對於s鎖的許可權設定。
二級封鎖協議:除防止了丟失修改,還可以進一步防止讀「臟」數據。但在二級封鎖協議中,由於讀完數據後即可釋放S鎖,所以它不能保證可重復讀。
三級封鎖協議:防止了丟失修改和不讀「臟」數據外,還進一步防止了不可重復讀,對於s鎖進行了進一步的限定。
(9)二級封鎖協議擴展閱讀:
其他類型的鎖:
1、共享鎖
共享 (S) 鎖允許並發事務讀取 (SELECT) 一個資源。資源上存在共享 (S) 鎖時,任何其它事務都不能修改數據。一旦已經讀取數據,便立即釋放資源上的共享 (S) 鎖,除非將事務隔離級別設置為可重復讀或更高級別,或者在事務生存周期內用鎖定提示保留共享 (S) 鎖。
2、更新鎖
更新 (U) 鎖可以防止通常形式的死鎖。一般更新模式由一個事務組成,此事務讀取記錄,獲取資源(頁或行)的共享 (S) 鎖,然後修改行,此操作要求鎖轉換為排它 (X) 鎖。
如果兩個事務獲得了資源上的共享模式鎖,然後試圖同時更新數據,則一個事務嘗試將鎖轉換為排它 (X) 鎖。共享模式到排它鎖的轉換必須等待一段時間,因為一個事務的排它鎖與其它事務的共享模式鎖不兼容;發生鎖等待。
第二個事務試圖獲取排它 (X) 鎖以進行更新。由於兩個事務都要轉換為排它 (X) 鎖,並且每個事務都等待另一個事務釋放共享模式鎖,因此發生死鎖。
若要避免這種潛在的死鎖問題,請使用更新 (U) 鎖。一次只有一個事務可以獲得資源的更新 (U) 鎖。如果事務修改資源,則更新 (U) 鎖轉換為排它 (X) 鎖。否則,鎖轉換為共享鎖。
3、排它鎖
排它 (X) 鎖可以防止並發事務對資源進行訪問。其它事務不能讀取或修改排它 (X) 鎖鎖定的數據。
4、意向鎖
意向鎖表示 SQL Server 需要在層次結構中的某些底層資源上獲取共享 (S) 鎖或排它 (X) 鎖。例如,放置在表級的共享意向鎖表示事務打算在表中的頁或行上放置共享 (S) 鎖。
在表級設置意向鎖可防止另一個事務隨後在包含那一頁的表上獲取排它 (X) 鎖。意向鎖可以提高性能,因為 SQL Server 僅在表級檢查意向鎖來確定事務是否可以安全地獲取該表上的鎖。而無須檢查表中的每行或每頁上的鎖以確定事務是否可以鎖定整個表。
㈩ 三級封鎖協議與兩段鎖協議互相遵循么
一級封鎖協議: 事務T在修改數據R之前必須先對其加X鎖, 直到事務結束才釋放。但是專如果只是讀數據屬,不需加鎖,因此會造成讀臟數據的情況
二級封鎖協議: 一級封鎖協議加上事務T在讀取數據R之前必須先對其加S鎖, 讀完後即可釋放可防止讀臟數據, 丟失修改不能保證可重復讀
所謂的臟數據,就是源系統中的數據在給定范圍之外無效的數據。或是數據格式非法,業務邏輯含糊不清等,皆可稱為臟數據。
三級封鎖協議是:1級封鎖協議加上事務T在讀取數據R之前必須先對其加S鎖,直到事務結束才釋放。3級封鎖協議除防止了丟失修改和不讀'臟'數據外,還進一步防止了不可重復讀。
兩段鎖協議:是指所有的事務必須分兩個階段對數據項加鎖和解鎖。即事務分兩個階段,第一個階段是獲得封鎖。事務可以獲得任何數據項上的任何類型的鎖,但是不能釋放;第二階段是釋放封鎖,事務可以釋放任何數據項上的任何類型的鎖,但不能申請。
基本的封鎖類型有兩種:排他鎖(exclusive locks,簡稱X鎖)和共享鎖(share locks,簡稱S鎖)
遵守三級封鎖協議,必然遵守兩段協議。
知只是充分條件而非充要條件。