《資料庫系統概論》第十一章 併發控制
第十一章 併發控制
1.併發操作帶來的資料不一致性包括丟失修改,不可重複讀和讀“髒”資料
丟失修改(lost update):兩個事務T1和T2讀入同一資料並修改,T2提交的結果破壞了T1提交的結果,導致T1的修改被覆蓋
不可重複讀(non-repeatable read):T1讀取資料後T2進行了修改刪除或者插入,然後T1再次讀的時候讀到的資料就不對了
讀“髒”資料(dirty read):T1修改某一資料後將其寫回磁碟,但是由於某些原因,T1回滾,操作被撤銷,但是T2讀到的還是之前修改好的資料,也就是“髒”資料。
2.併發控制的主要技術有:封鎖(locking)、時間戳(timestamp)、樂觀控制法(optimistic scheduler)和多版本併發控制(multi-version concurrency control MVCC)
3.基本的封鎖型別有:排它鎖(exclusive locks),又稱為寫鎖,若事務對資料加上排它鎖X鎖之後可以對資料進行讀寫,但是其他事務都不能再加鎖,直到事務釋放了X鎖為止
共享鎖(share locks),又稱為讀鎖,若事務對資料加上S鎖,可以對資料進行讀操作,並且其他事務不能再加X鎖但是可以加S鎖。
4.封鎖協議:一級封鎖協議:事務T對資料R進行修改之前必須對其新增X鎖,知道事務結束才釋放
二級封鎖協議:在一級封鎖協議的基礎上,加上事務讀取資料之前必須加上S鎖,讀完後即可釋放S鎖
三級封鎖協議:在一級封鎖協議的基礎上,加上事務讀取資料前必須加上S鎖,直到事務結束才釋放
5.死鎖的診斷:超時法:如果一個事務的等待時間超過了規定的時限,就確認發生了死鎖;
等待圖法:事務等待圖是一個有向圖G=(T,U),T是事務節點,U是事務的等待情況,如果等待圖中出現了環路就認為出現了死鎖的情況
6.可序列化排程:多個事務併發執行順序是正確的,當且僅當其結果與按某一次序序列地執行這些事務時的結果相同
可序列性(serializability)是併發事務正確排程的準則
7.顯示封鎖是應事務要求直接加在對資料物件上的鎖;隱式封鎖是加在資料上級結點的牽連鎖;意向鎖是用來指示下級結點也有鎖的鎖
8.IS鎖:表示對後代結點擬加S鎖(共享鎖)
IX鎖:表示對後代結點擬加X鎖(排它鎖)
SIX鎖:對自己加S鎖,擬對後代結點加X鎖