第六章 事務管理(併發控制技術1)
第六章 事務管理(併發控制技術1)
鎖
兩階段封鎖協議
一 併發控制
1)什麼是併發?
2)併發的重要性?
1.提高吞吐量和資源利用率
2.減少等待時間
3)不加控制的併發會怎麼樣?
1)實現有效併發的手段?
基於圖
基於時間戳
快照隔離
2)兩種鎖的區別是什麼?為什麼需要s鎖?
二 鎖與封鎖協議
2.1 鎖
為何引入鎖,不同型別鎖的作用?
引入鎖機制:
是為了保證資料的一致性(事務的隔離性)和提高系統的併發處理能力!
或者說,為了保證應用的有效性(兩人不會訂到同一位置火車票,檢視到一個不存在的成績--如教務處剛誤輸一個學生的成績後馬上又刪除)
S鎖已明顯增強了併發能力:
因為可能95%以上的應用是讀資料,更新應用的頻率非常小。沒有S鎖,系統的發處理能力會大大降低,僅比序列排程略好。
何謂鎖相容矩陣,S鎖帶來多大併發能力?
2.2 封鎖協議
指一組加鎖規則!
什麼是封鎖協議,加鎖後的排程是什麼樣?
這是一個可序列化排程?
2.3 死鎖
什麼是死鎖,如何引起,有何危害?
(直觀比喻:兩個小孩爭搶蛋糕和牛奶的情形)
形成兩個事務“相互等待”對方釋放資源各自才能往下繼續做的僵局!
不加控制的封鎖機制,可能引起死鎖現象發生!
2.4 活鎖
什麼是活鎖,如何引起,有何危害?
Starvation餓死(活鎖) is also possible if concurrency control manager is badly designed. For example:
1)A transaction may be waiting for an X-lock on an item, while a sequence of
other transactions request and are granted an S-lock on the same item.
2) The same transaction is repeatedly rolled back due to deadlocks.
出現一個事務永遠(長時間)等待某一資料項被其它事務釋放後才能進行封鎖的現象!
三 兩階段封鎖協議
3.1 兩階段封鎖協議
兩階段封鎖協議的主要特點?
事務T1-T4都是兩階段封鎖協議嗎,封鎖點在何處?
T1和T2不是兩階段封鎖協議,
T3和T4都是兩階段封鎖協議!
兩階段封鎖協議的主要用途?
示例分析一:兩階段封鎖協議&可序列化
兩階段封鎖排程P等價於何序列排程?
示例分析二:兩階段封鎖&死鎖
兩階段封排程Q能夠順利執行完成?
3.2 可序列化與兩階段封鎖的關係
Q是衝突可序列化排程嗎?
排程Q符合兩段鎖協議嗎?
1、等價於序列排程
T1-》T2-》T3 衝突可序列化
2、不符合!
兩階段封鎖協議保證衝突可序列化,
衝突可序列化未必符合兩階段封鎖!
3.3 級聯排程&兩階段封鎖協議p.376
排程P和Q的執行效果有何不同?
3.4 嚴格兩階段封鎖協議p.376
什麼是嚴格兩階段封鎖協議,該排程是嗎?
嚴格兩階段封鎖協議有何用途?
可保證排程不會出現級聯回滾!
3.5 強兩階段封鎖協議p.376
3.6 鎖轉換
什麼是帶鎖轉換的兩段鎖協議?
帶鎖轉換的兩階段封鎖協議:
– 第一階段:
能申請lock-S
能申請lock-X
能將lock-S 轉換為lock-X (upgrade升級)
– 第二階段:
能釋放 lock-S
能釋放 lock-X
能將lock-X 轉換為lock-S(downgrade降級)
這個協議確保了衝突可序列化.
四 封鎖機制的實現
鎖管理器的作用,主要組成部分?
鎖管理器的基本工作原理?
Read(A),Read(B),Read(C),C=A+B,Write(C)
使用兩階段封鎖協議為該事務加鎖。