亚洲欧美日韩综合系列在线_91精品人妻一区二区_欧美大肥婆一级特大AA片_九色91视频免费观看_亚洲综合国产精品_av中文字幕在线不卡_久久精品色综合网_看黄色视频的软件_无卡无码高清中文字幕码2024_亚洲欧美日韩天堂网

數(shù)據(jù)庫系統(tǒng)概論(第十一章:并發(fā)控制)

來源: kt1776133839 發(fā)布時間:2018-11-21 14:28:18 閱讀量:1063

第十一章  并發(fā)控制


1、多用戶數(shù)據(jù)庫系統(tǒng)

允許多個用戶同時使用的數(shù)據(jù)庫系統(tǒng)

2、多事務執(zhí)行方式 

(1)事務串行執(zhí)行

每個時刻只有一個事務運行,其他事務必須等到這個事務結(jié)束以后方能運行

不能充分利用系統(tǒng)資源,發(fā)揮數(shù)據(jù)庫共享資源的特點

(2)交叉并發(fā)方式(Interleaved  Concurrency)

在單處理機系統(tǒng)中,事務的并行執(zhí)行是這些并行事務的并行操作輪流交叉運行

單處理機系統(tǒng)中的并行事務并沒有真正地并行運行,但能夠減少處理機的空閑時間,提高系統(tǒng)的效率

 (3)同時并發(fā)方式(simultaneous  concurrency)

多處理機系統(tǒng)中,每個處理機可以運行一個事務,多個處理機可以同時運行多個事務,實現(xiàn)多個事務真正的并行運行

最理想的并發(fā)方式,但受制于硬件環(huán)境

更復雜的并發(fā)方式機制

3、本章討論的數(shù)據(jù)庫系統(tǒng)并發(fā)控制技術(shù)是以單處理機系統(tǒng)為基礎的 

4、事務并發(fā)執(zhí)行帶來的問題

(1)會產(chǎn)生多個事務同時存取同一數(shù)據(jù)的情況 

(2)可能會存取和存儲不正確的數(shù)據(jù),破壞事務隔離性和數(shù)據(jù)庫的一致性

5、數(shù)據(jù)庫管理系統(tǒng)必須提供并發(fā)控制機制

6、并發(fā)控制機制是衡量一個數(shù)據(jù)庫管理系統(tǒng)性能的重要標志之一


11.1.1 并發(fā)控制概述

1、事務是并發(fā)控制的基本單位

2、并發(fā)控制機制的任務

(1)對并發(fā)操作進行正確調(diào)度

(2)保證事務的隔離性

(3)保證數(shù)據(jù)庫的一致性

3、并發(fā)操作帶來的數(shù)據(jù)不一致性

(1)丟失修改(Lost Update)

兩個事務T1和T2讀入同一數(shù)據(jù)并修改,T2的提交結(jié)果破壞了T1提交的結(jié)果,導致T1的修改被丟失。

(2)不可重復讀(Non-repeatable Read)

不可重復讀是指事務T1讀取數(shù)據(jù)后,事務T2執(zhí)行更新操作,使T1無法再現(xiàn)前一次讀取結(jié)果。


不可重復讀包括三種情況:

事務T1讀取某一數(shù)據(jù)后,事務T2對其做了修改,當事務T1再次讀該數(shù)據(jù)時,得到與前一次不同的值 事務T1按一定條件從數(shù)據(jù)庫中讀取了某些數(shù)據(jù)記錄后,事務T2刪除了其中部分記錄,當T1再次按相同條件讀取數(shù)據(jù)時,發(fā)現(xiàn)某些記錄神秘地消失了。 

事務T1按一定條件從數(shù)據(jù)庫中讀取某些數(shù)據(jù)記錄后,事務T2插入了一些記錄,當T1再次按相同條件讀取數(shù)據(jù)時,發(fā)現(xiàn)多了一些記錄。

后兩種不可重復讀有時也稱為幻影現(xiàn)象(Phantom Row)

(3)讀“臟”數(shù)據(jù)(Dirty Read)

   讀“臟”數(shù)據(jù)是指:

事務T1修改某一數(shù)據(jù),并將其寫回磁盤

事務T2讀取同一數(shù)據(jù)后,T1由于某種原因被撤銷

這時T1已修改過的數(shù)據(jù)恢復原值,T2讀到的數(shù)據(jù)就與數(shù)據(jù)庫中的數(shù)據(jù)不一致

T2讀到的數(shù)據(jù)就為“臟”數(shù)據(jù),即不正確的數(shù)據(jù) 

4、記號

(1)R(x):讀數(shù)據(jù)x

(2)W(x):寫數(shù)據(jù)x 

5、數(shù)據(jù)不一致性:由于并發(fā)操作破壞了事務的隔離性


6、并發(fā)控制就是要用正確的方式調(diào)度并發(fā)操作,使一個用戶事務的執(zhí)行不受其他事務的干擾,從而避免造成數(shù)據(jù)的不一致性 

7、對數(shù)據(jù)庫的應用有時允許某些不一致性,例如有些統(tǒng)計工作涉及數(shù)據(jù)量很大,讀到一些“臟”數(shù)據(jù)對統(tǒng)計精度沒什么影響,可以降低對一致性的要求以減少系統(tǒng)開銷 

8、并發(fā)控制的主要技術(shù)

封鎖(Locking)

時間戳(Timestamp)

樂觀控制法

多版本并發(fā)控制(MVCC)




11.2  封鎖

1、什么是封鎖

(1)封鎖就是事務T在對某個數(shù)據(jù)對象(例如表、記錄等)操作之前,先向系統(tǒng)發(fā)出請求,對其加鎖

(2)加鎖后事務T就對該數(shù)據(jù)對象有了一定的控制,在事務T釋放它的鎖之前,其它的事務不能更新此數(shù)據(jù)對象。

(3)封鎖是實現(xiàn)并發(fā)控制的一個非常重要的技術(shù)

2、基本封鎖類型

(1)一個事務對某個數(shù)據(jù)對象加鎖后究竟擁有什么樣的控制由封鎖的類型決定。

(2)基本封鎖類型

排它鎖(Exclusive Locks,簡記為X鎖)

排它鎖又稱為寫鎖。

若事務T對數(shù)據(jù)對象A加上X鎖,則只允許T讀取和修改A,其它任何事務都不能再對A加任何類型的鎖,直到T釋放A上的鎖。

保證其他事務在T釋放A上的鎖之前不能再讀取和修改A 。

共享鎖(Share Locks,簡記為S鎖)

共享鎖又稱為讀鎖

若事務T對數(shù)據(jù)對象A加上S鎖,則事務T可以讀A但不能修改A,其它事務只能再對A加S鎖,而不能加X鎖,直到T釋放A上的S鎖

保證其他事務可以讀A,但在T釋放A上的S鎖之前不能對A做任何修改 




11.3  封鎖協(xié)議

1、什么是封鎖協(xié)議

(1)在運用X鎖和S鎖對數(shù)據(jù)對象加鎖時,需要約定一些規(guī)則,這些規(guī)則為封鎖協(xié)議(Locking Protocol)。 

何時申請X鎖或S鎖

持鎖時間

何時釋放

(2)對封鎖方式規(guī)定不同的規(guī)則,就形成了各種不同的封鎖協(xié)議,它們分別在不同的程度上為并發(fā)操作的正確調(diào)度提供一定的保證。

2、保持數(shù)據(jù)一致性的常用封鎖協(xié)議

一級封鎖協(xié)議

(1)事務T在修改數(shù)據(jù)R之前必須先對其加X鎖,直到事務結(jié)束才釋放。

正常結(jié)束(COMMIT)

非正常結(jié)束(ROLLBACK)

(2)一級封鎖協(xié)議可防止丟失修改,并保證事務T是可恢復的。

(3)在一級封鎖協(xié)議中,如果僅僅是讀數(shù)據(jù)不對其進行修改,是不需要加鎖的,所以它不能保證可重復讀和不讀“臟”數(shù)據(jù)。

二級封鎖協(xié)議

(1)一級封鎖協(xié)議加上事務T在讀取數(shù)據(jù)R之前必須先對其加S鎖,讀完后即可釋放S鎖。

(2)二級封鎖協(xié)議可以防止丟失修改和讀“臟”數(shù)據(jù)。

(3)在二級封鎖協(xié)議中,由于讀完數(shù)據(jù)后即可釋放S鎖,所以它不能保證可重復讀。

三級封鎖協(xié)議

(1)一級封鎖協(xié)議加上事務T在讀取數(shù)據(jù)R之前必須先對其加S鎖,直到事務結(jié)束才釋放。

(2)三級封鎖協(xié)議可防止丟失修改、讀臟數(shù)據(jù)和不可重復讀。

封鎖協(xié)議小結(jié)

(1)三級協(xié)議的主要區(qū)別

什么操作需要申請封鎖以及何時釋放鎖(即持鎖時間)

(2)不同的封鎖協(xié)議使事務達到的一致性級別不同

封鎖協(xié)議級別越高,一致性程度越高




11.4  活鎖和死鎖

(1)封鎖技術(shù)可以有效地解決并行操作的一致性問題,但也帶來一些新的問題

死鎖

活鎖

11.4.1 活鎖

1、事務T1封鎖了數(shù)據(jù)R


2、事務T2又請求封鎖R,于是T2等待。

3、T3也請求封鎖R,當T1釋放了R上的封鎖之后系統(tǒng)首先批準了T3的請求,T2仍然等待。


4、T4又請求封鎖R,當T3釋放了R上的封鎖之后系統(tǒng)又批準了T4的請求……

5、T2有可能永遠等待,這就是活鎖的情形 

6、避免活鎖:采用先來先服務的策略

(1)當多個事務請求封鎖同一數(shù)據(jù)對象時

(2)按請求封鎖的先后次序?qū)@些事務排隊

(3)該數(shù)據(jù)對象上的鎖一旦釋放,首先批準申請隊列中第一個事務獲得鎖



11.4.2  死鎖

1、事務T1封鎖了數(shù)據(jù)R1

2、T2封鎖了數(shù)據(jù)R2

3、T1又請求封鎖R2,因T2已封鎖了R2,于是T1等待T2釋放R2上的鎖

4、接著T2又申請封鎖R1,因T1已封鎖了R1,T2也只能等待T1釋放R1上的鎖

5、這樣T1在等待T2,而T2又在等待T1,T1和T2兩個事務永遠不能結(jié)束,形成死鎖 

6、解決死鎖的方法

兩類方法

(1)死鎖的預防

(2)死鎖的診斷與解除

7、死鎖的預防

(1)產(chǎn)生死鎖的原因是兩個或多個事務都已封鎖了一些數(shù)據(jù)對象,然后又都請求對已為其他事務封鎖的數(shù)據(jù)對象加鎖,從而出現(xiàn)死等待。

(2)預防死鎖的發(fā)生就是要破壞產(chǎn)生死鎖的條件

(3)預防死鎖的方法

一次封鎖法

順序封鎖法

8、 死鎖的診斷與解除

(1)死鎖的診斷

超時法

如果一個事務的等待時間超過了規(guī)定的時限,就認為發(fā)生了死鎖

優(yōu)點:實現(xiàn)簡單

缺點:

有可能誤判死鎖

時限若設置得太長,死鎖發(fā)生后不能及時發(fā)現(xiàn)


等待圖法 

用事務等待圖動態(tài)反映所有事務的等待情況

事務等待圖是一個有向圖G=(T,U)。

T為結(jié)點的集合,每個結(jié)點表示正運行的事務。

U為邊的集合,每條邊表示事務等待的情況。

若T1等待T2,則T1,T2之間劃一條有向邊,從T1指向T2

并發(fā)控制子系統(tǒng)周期性地(比如每隔數(shù)秒)生成事務等待圖,檢測事務。如果發(fā)現(xiàn)圖中存在回路,則表示系統(tǒng)中出現(xiàn)了死鎖。


解除死鎖

選擇一個處理死鎖代價最小的事務,將其撤消

釋放此事務持有的所有的鎖,使其它事務能繼續(xù)運行下去



11.5  并發(fā)調(diào)度的可串行性

1、數(shù)據(jù)庫管理系統(tǒng)對并發(fā)事務不同的調(diào)度可能會產(chǎn)生不同的結(jié)果

2、串行調(diào)度是正確的

3、執(zhí)行結(jié)果等價于串行調(diào)度的調(diào)度也是正確的,稱為可串行化調(diào)度


 


 

11.5.1 可串行化調(diào)度

1、可串行化(Serializable)調(diào)度

多個事務的并發(fā)執(zhí)行是正確的,當且僅當其結(jié)果與按某一次序串行地執(zhí)行這些事務時的結(jié)果相同

2、可串行性(Serializability)

(1)是并發(fā)事務正確調(diào)度的準則

(2)一個給定的并發(fā)調(diào)度,當且僅當它是可串行化的,才認為是正確調(diào)度 




11.5.2 沖突可串行化調(diào)度

1、沖突可串行化

(1)一個比可串行化更嚴格的條件

(2)商用系統(tǒng)中的調(diào)度器采用

2、沖突操作:是指不同的事務對同一數(shù)據(jù)的讀寫操作和寫寫操作:     

Ri(x)與Wj(x)        /*事務Ti讀x,Tj寫x,其中i≠j*/

Wi(x)與Wj(x)         /*事務Ti寫x,Tj寫x,其中i≠j*/

    其他操作是不沖突操作

3、沖突

不能交換(Swap)的動作:

同一事務的兩個操作

不同事務的沖突操作

4、沖突可串行化(續(xù))

(1)一個調(diào)度Sc在保證沖突操作的次序不變的情況下,通過交換兩個事務不沖突操作的次序得到另一個調(diào)度Sc’,如果Sc’是串行的,稱調(diào)度Sc是沖突可串行化的調(diào)度

(2)若一個調(diào)度是沖突可串行化,則一定是可串行化的調(diào)度

(3)可用這種方法判斷一個調(diào)度是否是沖突可串行化的

(4)沖突可串行化調(diào)度是可串行化調(diào)度的充分條件,不是必要條件。還有不滿足沖突可串行化條件的可串行化調(diào)度。




11.6  兩段鎖協(xié)議

1、數(shù)據(jù)庫管理系統(tǒng)普遍采用兩段鎖協(xié)議的方法實現(xiàn)并發(fā)調(diào)度的可串行性,從而保證調(diào)度的正確性 

2、兩段鎖協(xié)議  

指所有事務必須分兩個階段對數(shù)據(jù)項加鎖和解鎖 

(1)在對任何數(shù)據(jù)進行讀、寫操作之前,事務首先要獲得對該數(shù)據(jù)的封鎖

(2)在釋放一個封鎖之后,事務不再申請和獲得任何其他封鎖

“3、兩段”鎖的含義

事務分為兩個階段

(1)第一階段是獲得封鎖,也稱為擴展階段

事務可以申請獲得任何數(shù)據(jù)項上的任何類型的鎖,但是不能釋放任何鎖  

(2)第二階段是釋放封鎖,也稱為收縮階段

事務可以釋放任何數(shù)據(jù)項上的任何類型的鎖,但是不能再申請任何鎖 

4、事務遵守兩段鎖協(xié)議是可串行化調(diào)度的充分條件,而不是必要條件。


5、若并發(fā)事務都遵守兩段鎖協(xié)議,則對這些事務的任何并發(fā)調(diào)度策略都是可串行化的

6、若并發(fā)事務的一個調(diào)度是可串行化的,不一定所有事務都符合兩段鎖協(xié)議

7、兩段鎖協(xié)議與防止死鎖的一次封鎖法

(1)一次封鎖法要求每個事務必須一次將所有要使用的數(shù)據(jù)全部加鎖,否則就不能繼續(xù)執(zhí)行,因此一次封鎖法遵守兩段鎖協(xié)議

(2)但是兩段鎖協(xié)議并不要求事務必須一次將所有要使用的數(shù)據(jù)全部加鎖,因此遵守兩段鎖協(xié)議的事務可能發(fā)生死鎖




11.7  封鎖的粒度

1、封鎖對象的大小稱為封鎖粒度(Granularity) 

2、封鎖的對象:邏輯單元,物理單元

3、選擇封鎖粒度原則

(1)封鎖粒度與系統(tǒng)的并發(fā)度和并發(fā)控制的開銷密切相關(guān)。

封鎖的粒度越大,數(shù)據(jù)庫所能夠封鎖的數(shù)據(jù)單元就越少,并發(fā)度就越小,系統(tǒng)開銷也越小;

封鎖的粒度越小,并發(fā)度較高,但系統(tǒng)開銷也就越大





11.7.1 多粒度封鎖

1、多粒度樹

(1)以樹形結(jié)構(gòu)來表示多級封鎖粒度。

(2)根結(jié)點是整個數(shù)據(jù)庫,表示最大的數(shù)據(jù)粒度。

(3)葉結(jié)點表示最小的數(shù)據(jù)粒度。

2、允許多粒度樹中的每個結(jié)點被獨立地加鎖

3、對一個結(jié)點加鎖意味著這個結(jié)點的所有后裔結(jié)點也被加以同樣類型的鎖

4、在多粒度封鎖中一個數(shù)據(jù)對象可能以兩種方式封鎖:顯式封鎖和隱式封鎖

5、顯式封鎖和隱式封鎖

(1)顯式封鎖: 直接加到數(shù)據(jù)對象上的封鎖。

(2)隱式封鎖:是該數(shù)據(jù)對象沒有獨立加鎖,是由于其上級結(jié)點加鎖而使該數(shù)據(jù)對象加上了鎖

(3)顯式封鎖和隱式封鎖的效果是一樣的

(4)系統(tǒng)檢查封鎖沖突時

要檢查顯式封鎖

還要檢查隱式封鎖

(5)對某個數(shù)據(jù)對象加鎖,系統(tǒng)要檢查

該數(shù)據(jù)對象

有無顯式封鎖與之沖突

所有上級結(jié)點

檢查本事務的顯式封鎖是否與該數(shù)據(jù)對象上的隱式封鎖沖突:(由上級結(jié)點已加的封鎖造成的)

所有下級結(jié)點

看上面的顯式封鎖是否與本事務的隱式封鎖(將加到下級結(jié)點的封鎖)沖突



11.7.2 意向鎖

1、引進意向鎖(intention lock)目的

提高對某個數(shù)據(jù)對象加鎖時系統(tǒng)的檢查效率

2、如果對一個結(jié)點加意向鎖,則說明該結(jié)點的下層結(jié)點正在被加鎖

3、對任一結(jié)點加基本鎖,必須先對它的上層結(jié)點加意向鎖 

4、常用意向鎖

意向共享鎖(Intent Share Lock,簡稱IS鎖)

意向排它鎖(Intent Exclusive Lock,簡稱IX鎖)

共享意向排它鎖(Share Intent Exclusive Lock,簡稱SIX鎖)

5、IS鎖

如果對一個數(shù)據(jù)對象加IS鎖,表示它的后裔結(jié)點擬(意向)加S鎖。

6、IX鎖

如果對一個數(shù)據(jù)對象加IX鎖,表示它的后裔結(jié)點擬(意向)加X鎖。

7、SIX鎖

如果對一個數(shù)據(jù)對象加SIX鎖,表示對它加S鎖,再加IX鎖,即SIX = S + IX。

8、具有意向鎖的多粒度封鎖方法

(1)申請封鎖時應該按自上而下的次序進行

(2)釋放封鎖時則應該按自下而上的次序進行

9、具有意向鎖的多粒度封鎖方法

(1)提高了系統(tǒng)的并發(fā)度

(2)減少了加鎖和解鎖的開銷

(3)在實際的數(shù)據(jù)庫管理系統(tǒng)產(chǎn)品中得到廣泛應用 



11.9 小結(jié)

1、數(shù)據(jù)庫的并發(fā)控制以事務為單位


2、數(shù)據(jù)庫的并發(fā)控制通常使用封鎖機制

(1)基本封鎖

(2)多粒度封鎖

3、活鎖和死鎖

4、并發(fā)事務調(diào)度的正確性

(1)可串行性

并發(fā)操作的正確性則通常由兩段鎖協(xié)議來保證。

兩段鎖協(xié)議是可串行化調(diào)度的充分條件,但不是必要條件

(2)沖突可串行性

5、其他并發(fā)控制機制

時間戳方法

樂觀控制法

多版本并發(fā)控制

--------------------- 



分享:
評論:
你還沒有登錄,請先