資料庫的2PL兩段鎖協議與正規化

2021-09-21 22:56:01 字數 746 閱讀 5674

1.2pl

2pl定義:1.所有的讀寫操作之前均需加鎖;2.解鎖操作後不允許再出現加鎖操作;

s鎖:加s鎖後其他事務可讀,不可寫,直至加鎖事務結束;

x鎖:加x鎖後其他事務均不可以讀或寫,直至事務結束;

事務執行的過程分為兩個階段,一是獲得封鎖階段,二是釋放封鎖階段;2pl可能產生死鎖;

2pl可以防止讀髒資料、丟失修改等;是事務可序列化的必要條件,不是充分條件;

可序列化:多個操作併發執行時,如不進行併發控制,可能出現錯誤的結果。但如果把所有併發操作全部序列執行,又失去了併發操作的優勢。所以提出了可序列化的概念。可序列性:當且僅當一組事務的交叉執行結果與某一串行執行的執行結果一致時,這組事務具有可序列性;

2.一級鎖、二級鎖、**鎖

一級鎖:所有寫操作之前加x鎖,事務結束釋放,可以防止丟失修改;

二級鎖;所有寫操作之前加x鎖,事務結束釋放;所有讀操作前加s鎖,操作結束釋放,可以防止丟失修改和讀髒資料;

**鎖:所有寫操作之前加x鎖,事務結束釋放;所有讀操作前加s鎖,事務結束釋放,可以防止丟失修改、讀資料和不可重複讀;

二、正規化

第一正規化:屬性不可分;

第二正規化:所有非主屬性完全依賴於碼;

第三正規化:符合2nf,同時沒有傳遞依賴;

bc正規化:符合3nf,且主屬性不依賴於主屬性;即若r屬於1nf,且所有屬性不傳遞依賴於碼;每個非平凡依賴關係的左邊均包含鍵碼;每個依賴關鍵的決定因素必須包含鍵碼;

4nf:要求把同一表內的n:m的關係刪除;

2PL協議,兩段封鎖協議

two phase locking protocol 2pl協議,兩段封鎖協議 two phase transaction and two phase locking protocol 在乙個事務中,如果加鎖動作都在釋放鎖動作之前稱此事務為兩段事務。上述加鎖的限制稱兩段封鎖協議。兩段事務可截然為兩段...

MySQL的兩階段所協議2PL

實驗總結 經常聽到別人說2pl,猛的一聽當時真的是一臉懵逼的感覺,啥意思?2pl是什麼玩意?後來又聽人說兩階段鎖協議,這個又是什麼?我咋沒有聽過呢?後來才知這是mysql中的乙個術語 2pl two phase locking 翻譯成中文就是兩階段鎖協議。廢話不多說,我們來用實際的例子體驗一把。實驗...

資料庫系統原理 兩段鎖協議 死鎖練習題

14.考慮t和t2兩個事務。t1 r a r b b a b w b t2 r b r a a a b w a 1 改寫t和t2,增加加鎖操作和解鎖操作,並要求遵循兩階段封鎖協議。2 說明t和t2的執行是否會引起死鎖,給出t和t2的乙個排程並說明之。1 如下表所示t1 t2slock a r a s...