資料庫 封鎖技術

2021-07-22 20:22:35 字數 1099 閱讀 9109

一、前言:

資料庫的併發操作通常會帶來三個問題:丟失更新、讀髒資料、不可重複讀。解決這些問題就需要用到資料庫的封鎖機制進行控制,但封鎖機制的引入又引起了一系列問題:效能下降、死鎖等。

1、丟失更新:乙個事務的更新覆蓋了其他事務的更新結果。例如使用者a把值從8改到了5,使用者b把值從5改到了8,則使用者a丟失了它的更新。

2、讀髒資料:事務t1修改某一資料,並將其寫回磁碟,事務t2讀取同一資料後,事務t1由於某種原因被撤銷,這時事務t1修改過的資料恢復原值,事務t2讀到的資料就和資料庫中的資料不一致,是錯誤的資料。又稱「髒」資料。

3、不可重複讀:事務t1讀取資料後,事務t2執行了更新操作。而事務t1使用的仍然是更新前的值,造成了資料不一致性。

為了解決這些併發操作帶來的問題。我們需要引入併發控制。主要方法是封鎖技術。

二、封鎖技術:

鎖分為兩種:一種是排他型鎖(x鎖),另一種是共享型鎖(s鎖)。

1、排他鎖:若事務t對資料物件a加上x鎖,則只允許t讀取和修改a,其他事務都不能再對a加任何型別的所。直到t釋放a上的鎖。可見x鎖只允許乙個事務獨鎖某個資料,具有排他性。

2、共享鎖:若事務t對資料物件a加上s鎖,則只允許t讀取a,但不能修改a,其他事務只能再對a加上s鎖,這就保證了其他事務可以讀a,但在t釋放a上的s鎖之前不能對a進行任何修改。(允許併發讀,但不允許修改。)

三、封鎖協議:

1、一級封鎖協議:事務在修改資料a之前必須先對其加x鎖,直到事務結束才釋放。一級封鎖協議可以解決丟失更新問題。(事務結束包括正常結束(commit)和非正常結束(rollback)。)

2、二級封鎖協議:在一級封鎖協議的基礎上,加上事務t在讀資料a之前必須先對其加s鎖,讀完後即可釋放s鎖。二級封鎖協議可以解決讀「髒」資料的問題。

3、**封鎖協議:在一級封鎖協議的基礎上,加上事務t在讀資料a之前必須先對其加s鎖,直到事務結束時釋放s鎖。**封鎖協議除了防止丟失更新和讀「髒」資料外,還進一步防止了不可重複讀。

四、總結:

最近了解到了樂觀鎖和悲觀鎖。知道它們和共享鎖、排他鎖一樣,都能解決丟失更新、讀髒資料、不可重複讀的問題。但是對於樂觀鎖、悲觀鎖和共享鎖、排他鎖的區別還不甚了解。。。期望大牛前來指導。

資料庫 封鎖技術

前幾天我們自考小組,一起學習資料庫,學習到了併發操作,由於並行技術帶來了幾個問題,通過鎖可以解決這些問題,但是鎖不好理解,完全不知道是怎麼用的,聽著比較高大上,但是經過分析也就不過如此。許多事務可能同時對同一資料進行操作,這個操作叫做併發操作,這裡的 併發 指的是單處理機,利用分時方法實行多個事務的...

資料庫 封鎖型別

1.讀寫鎖 互斥鎖 exclusive 簡寫為x鎖,又稱為寫鎖。共享鎖 shared 簡寫為s鎖,又稱為讀鎖。對x鎖和s鎖有兩個規定 乙個事務對資料物件a加了x鎖,那麼就可以對a進行讀取和更新。加鎖期間其他事務不能對a加任何形式的鎖。乙個事務對資料物件a加了s鎖,可以對a進行讀取操作,但是不能進行更...

資料庫技術

建立乙個資料庫的一般步驟 建立connection物件,諒解資料庫。建立command物件,這行sql命令。建立dataadapter物件,提供資料來源與記錄集之間的資料交換,資料庫與記憶體中的資料交換。建立dataset物件,將從資料來源中得到的資料儲存在記憶體中,並對資料進行各種操作等。資料庫連...