1. 程式人生 > 其它 >第六章 事務管理(併發控制技術1)

第六章 事務管理(併發控制技術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)
使用兩階段封鎖協議為該事務加鎖。