數(shù)據(jù)庫課件第十章數(shù)據(jù)庫安全性和并發(fā)控制_第1頁
數(shù)據(jù)庫課件第十章數(shù)據(jù)庫安全性和并發(fā)控制_第2頁
數(shù)據(jù)庫課件第十章數(shù)據(jù)庫安全性和并發(fā)控制_第3頁
數(shù)據(jù)庫課件第十章數(shù)據(jù)庫安全性和并發(fā)控制_第4頁
數(shù)據(jù)庫課件第十章數(shù)據(jù)庫安全性和并發(fā)控制_第5頁
已閱讀5頁,還剩77頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

數(shù)據(jù)庫課件第十章數(shù)據(jù)庫安全性和并發(fā)控制數(shù)據(jù)庫課件第十章數(shù)據(jù)庫安全性和并發(fā)控制數(shù)據(jù)庫課件第十章數(shù)據(jù)庫安全性和并發(fā)控制第十章

數(shù)據(jù)庫的安全性和并發(fā)控制12021/2/21數(shù)據(jù)庫課件第十章數(shù)據(jù)庫安全性和并發(fā)控制數(shù)據(jù)庫課件第十章數(shù)據(jù)庫第十章

數(shù)據(jù)庫的安全性和并發(fā)控制22021/2/21第十章

數(shù)據(jù)庫的安全性和并發(fā)控制22021/2/21第一節(jié)

數(shù)據(jù)庫的安全性一、數(shù)據(jù)庫的安全性

所謂數(shù)據(jù)庫的安全性是指保護數(shù)據(jù)以防止不合法的使用所造成的數(shù)據(jù)泄漏、更改和破壞。32021/2/21第一節(jié)數(shù)據(jù)庫的安全性一、數(shù)據(jù)庫的安全性所謂數(shù)二、數(shù)據(jù)庫的安全級別1、應用環(huán)境級2、操作系統(tǒng)級3、網(wǎng)絡級4、數(shù)據(jù)庫系統(tǒng)級42021/2/21二、數(shù)據(jù)庫的安全級別1、應用環(huán)境級2、操作系統(tǒng)級3、網(wǎng)絡級4三、存取控制1、用戶權(quán)限:用戶使用數(shù)據(jù)庫的方式。數(shù)據(jù)對象操作權(quán)限屬性列SELECT、INSERT、DELETE、UPDATE、ALLPRIVILEGES視圖SELECT、INSERT、DELETE、UPDATE、ALLPRIVILEGES基本表SELECT、INSERT、DELETE、UPDATE、ALTER、INDEX、ALLPRIVILEGES數(shù)據(jù)庫CREATETAB52021/2/21三、存取控制1、用戶權(quán)限:用戶使用數(shù)據(jù)庫的方式。數(shù)據(jù)對象操作2、授予權(quán)限GRANT<權(quán)限>[,<權(quán)限>]...[ON<數(shù)據(jù)對象>]TO<用戶>[,<用戶>]...[WITHGRANTOPTION];

WITHGRANTOPTION指獲得權(quán)限的用戶可以將權(quán)限授予其他用戶。62021/2/212、授予權(quán)限GRANT<權(quán)限>[,<權(quán)限>]...

例1DBA把Orders數(shù)據(jù)庫中建立基本表的權(quán)限授予用戶USER001和USER002。GRANTCREATETABONOrdersTOUSER001,USER002;72021/2/21例1DBA把Orders數(shù)據(jù)庫中建立基本表的

例2DBA把查詢Customer表的權(quán)限授予用戶USER003。GRANTSELECTONCustomerTOUSER003;82021/2/21例2DBA把查詢Customer表的權(quán)限授予用戶US

例3USER002把對Product表的查詢和修改Stock屬性列的權(quán)限授予用戶USER004,并允許USER004將此權(quán)限再轉(zhuǎn)授給其他用戶。GRANTSELECT,UPDATE(Stock)ONProductTOUSER004WITHGRANTOPTION92021/2/21例3USER002把對Product表的查詢

例4DBA把對Product表的所有權(quán)限授予所有用戶GRANTALLPRIVILEGESONProductTOPUBLIC注:此處“PUBLIC”指所有用戶。102021/2/21例4DBA把對Product表的所有權(quán)限授予所3、收回權(quán)限REVOKE<權(quán)限>[,<權(quán)限>]...[ON<數(shù)據(jù)對象>]FROM<用戶>[,<用戶>]...;112021/2/213、收回權(quán)限REVOKE<權(quán)限>[,<權(quán)限>]...1

例1將USER003對Customer表的查詢權(quán)限收回。REVOKESELECTONCustomerFROMUSER003122021/2/21例1將USER003對Customer表的查詢權(quán)限REVOKESELECT,UPDATE(Stock)ONProductFROMUSER004

例2將USER004對Product表的查詢和修改Stock屬性列的權(quán)限收回。132021/2/21REVOKESELECT,UPDATE(Stock)

例3DBA把USER001和USER002在Orders數(shù)據(jù)庫中建立基本表的權(quán)限收回。REVOKECRATETABONOrdersFROMUSER001,USER002;142021/2/21例3DBA把USER001和USER002第二節(jié)數(shù)據(jù)庫的并發(fā)控制一、事務

事務是數(shù)據(jù)庫的邏輯工作單位,由用戶定義的一組操作序列組成,序列中的操作要么全做,要么全不做。1、事務的定義152021/2/21第二節(jié)數(shù)據(jù)庫的并發(fā)控制一、事務事務是數(shù)據(jù)庫的邏輯工作2、事務的特性(1)原子性:事務中的操作要么不做,要么全做;(2)一致性:數(shù)據(jù)庫從一個一致狀態(tài)變?yōu)榱硪粋€一致狀態(tài);(3)隔離性:任一事務的執(zhí)行不受其他事務的干擾;(4)持續(xù)性:事務完成后其對數(shù)據(jù)庫的更改不會因系統(tǒng)故障而丟失。162021/2/212、事務的特性(1)原子性:事務中的操作要么不做,要么全做;二、事務的串行調(diào)度和并發(fā)調(diào)度1、調(diào)度事務的執(zhí)行次序。2、串行調(diào)度:多個事務按先后順序依次執(zhí)行。3、并行調(diào)度:多個事務同時交叉執(zhí)行。172021/2/21二、事務的串行調(diào)度和并發(fā)調(diào)度1、調(diào)度172021/2/214、實例有兩個事務T1和T2,它們都要訂購某日某車次的2張硬臥火車票和1張軟臥火車票,這兩個事務都包含下列操作182021/2/214、實例182021/2/21read(A);//從數(shù)據(jù)庫中讀出硬臥車票剩余數(shù)量AA=A-2;//訂購了2張車票,write(A);//將新的剩余硬臥車票數(shù)量A寫回數(shù)據(jù)庫write(B);//將新的剩余軟臥車票數(shù)量B寫回數(shù)據(jù)庫read(B);//從數(shù)據(jù)庫中讀出剩余軟臥車票數(shù)量BB=B-1;//訂購了1張車票192021/2/21read(A);//從數(shù)據(jù)庫中讀出硬臥車票剩余數(shù)量A對事務T1和T2執(zhí)行串行操作(硬、軟臥車票初始值為100和50)事務T1事務T2數(shù)據(jù)庫中的值read(A)A=A-2write(A)read(B)B=B-1write(B)read(A)A=A-2write(A)read(B)B=B-1write(B)A=50A=48B=100B=99A=48A=46B=99B=98串行調(diào)度1:先T1后T2事務T1事務T2數(shù)據(jù)庫中的值read(A)A=A-2write(A)read(B)B=B-1write(B)read(A)A=A-2write(A)read(B)B=B-1write(B)A=50A=48B=100B=99A=48A=46B=99B=98串行調(diào)度2:先T2后T1202021/2/21對事務T1和T2執(zhí)行串行操作(硬、軟臥車票初始值為100和5對事務T1和T2執(zhí)行并發(fā)操作(硬、軟臥車票初始值為100和50)事務T1事務T2數(shù)據(jù)庫中的值read(A)A=A-2write(A)read(B)B=B-1write(B)read(A)A=A-2write(A)read(B)B=B-1write(B)A=50A=48A=46B=100B=99B=98并發(fā)調(diào)度1事務T1事務T2數(shù)據(jù)庫中的值read(A)A=A-2write(A)read(B)B=B-1write(B)read(A)A=A-2write(A)read(B)B=B-1write(B)A=50A=48B=100A=48A=46B=100B=99B=99并發(fā)調(diào)度2212021/2/21對事務T1和T2執(zhí)行并發(fā)操作(硬、軟臥車票初始值為100和5

6、結(jié)論事務串行調(diào)度的結(jié)果總是正確的,而事務并發(fā)調(diào)度的結(jié)果則不一定完全正確。當多個事務并發(fā)調(diào)度的結(jié)果與串行調(diào)度的結(jié)果相同時,稱該并發(fā)調(diào)度是可串行化的調(diào)度。222021/2/216、結(jié)論222021/2/21三、事務并發(fā)執(zhí)行所帶來的問題1、丟失修改時刻事務T1事務T2數(shù)據(jù)庫中的值t0t1t2t3t4t5read(A)A=A-10write(A)read(A)A=A-5write(A)A=50A=50A=40A=45232021/2/21三、事務并發(fā)執(zhí)行所帶來的問題1、丟失修改時刻事務T1事務T22、不可重復讀時刻事務T1事務T2數(shù)據(jù)庫中的值t0t1t2t3t4t5t6t7t8read(A)read(B)求和:A+B=150read(A)read(B)求和:A+B=350read(A)A=A+200write(A)A=50,B=100A=250242021/2/212、不可重復讀時刻事務T1事務T2數(shù)據(jù)庫中的值t0read(3、讀“臟”數(shù)據(jù)時刻事務T1事務T2數(shù)據(jù)庫中的值t0t1t2t3t4read(A)A=A*3write(A)ROLLBACKread(A)A=50A=150A=150A=50252021/2/213、讀“臟”數(shù)據(jù)時刻事務T1事務T2數(shù)據(jù)庫中的值t0read四、封鎖1、封鎖的含義封鎖就是事務T在對數(shù)據(jù)對象進行操作前,先向系統(tǒng)發(fā)出對數(shù)據(jù)對象的加鎖請求,在獲得系統(tǒng)批準后才能對數(shù)據(jù)對象進行操作,其他事務不能對加鎖的數(shù)據(jù)對象進行操作。262021/2/21四、封鎖1、封鎖的含義262021/2/212、封鎖的兩種基本類型

(1)排它鎖(X封鎖、寫鎖)

數(shù)據(jù)對象被加上X封鎖之后,其他事務不能再對該數(shù)據(jù)對象實施任何封鎖。

(2)共享鎖(S封鎖、讀鎖)

數(shù)據(jù)對象被加上S封鎖之后,其他事務只能對該數(shù)據(jù)對象實施S封鎖。T2T1XS-XNNYSNYY-YYY272021/2/212、封鎖的兩種基本類型T2XS-3、封鎖協(xié)議(1)一級封鎖協(xié)議內(nèi)容:事務T在更新數(shù)據(jù)對象A以前,必須對數(shù)據(jù)對象A加X鎖,且直到事務T結(jié)束時才可以釋放該鎖。注意:一級封鎖可以防止“丟失修改”。282021/2/213、封鎖協(xié)議(1)一級封鎖協(xié)議282021/2/21時刻事務T1事務T2數(shù)據(jù)庫中的值t0t1t2t3t4t5t6t7t8t9t10Xlock(A)read(A)A=A-10write(A)CommitUnlock(A)Xlock(A)WaitWaitWaitWaitXlock(A)read(A)A=A-5write(A)A=50A=40A=40A=35一級封鎖時刻事務T1事務T2數(shù)據(jù)庫中的值t0t1t2t3t4t5read(A)A=A-10write(A)read(A)A=A-5write(A)A=50A=50A=40A=45修改丟失292021/2/21時刻事務T1事務T2數(shù)據(jù)庫中的值t0Xlock(A)一級封鎖(2)二級封鎖協(xié)議內(nèi)容:事務T在更新數(shù)據(jù)對象A以前,必須對數(shù)據(jù)對象A加X鎖,且直到事務T結(jié)束時才可以釋放該鎖,還規(guī)定事務T在讀取數(shù)據(jù)對象B以前必須先對其加S鎖,讀完后即可釋放S鎖。注意:二級封鎖可以防止“丟失修改”和“讀臟數(shù)據(jù)”302021/2/21(2)二級封鎖協(xié)議內(nèi)容:事務T在更新數(shù)據(jù)對象A以前,必須對數(shù)時刻事務T1事務T2數(shù)據(jù)庫中的值t0t1t2t3t4t5t6t7t8t9Xlock(A)read(A)A=A*3write(A)ROLLBACKUnlock(A)Slock(A)WaitWaitSlock(A)read(A)A=50A=150A=50A=50時刻事務T1事務T2數(shù)據(jù)庫中的值t0t1t2t3t4t5read(A)A=A*3write(A)ROLLBACKread(A)A=50A=150A=150A=50讀臟數(shù)據(jù)二級封鎖312021/2/21時刻事務T1事務T2數(shù)據(jù)庫中的值t0Xlock(A)A=50(3)三級封鎖協(xié)議內(nèi)容:事務T在更新數(shù)據(jù)對象A以前,必須對數(shù)據(jù)對象A加X鎖,且直到事務T結(jié)束時才可以釋放該鎖,還規(guī)定事務T在讀取數(shù)據(jù)對象B以前必須先對其加S鎖,該鎖也必須在事務T結(jié)束時才可釋放。注意:三級封鎖可以防止“修改丟失”、“讀臟數(shù)據(jù)”、“不可重復讀”。322021/2/21(3)三級封鎖協(xié)議內(nèi)容:事務T在更新數(shù)據(jù)對象A以前,必須對數(shù)時刻事務T1事務T2數(shù)據(jù)庫中的值t0t1t2t3t4t5t6t7t8read(A)read(B)A+B=150read(A)read(B)A+B=350read(A)A=A+200write(A)A=50B=100A=250時刻事務T1事務T2數(shù)據(jù)庫中的值t0t1t2t3t4t5t6t7t8t9t10t11t12t13t14t15t16t17Slock(A)Slock(B)read(A)read(B)A+B=150read(A)read(B)A+B=150CommitUnlock(A)Unlock(B)Xlock(A)WaitWaitWaitWaitWaitXlock(A)read(A)A=A+200write(A)CommitUnlock(A)A=50B=100A=250不可重復讀三級封鎖332021/2/21時刻事務T1事務T2數(shù)據(jù)庫中的值t0read(A)A=504、活鎖和死鎖(1)活鎖在多個事務并發(fā)執(zhí)行的過程中,可能會存在某個盡管總有機會獲得鎖的事務卻永遠也沒有得到鎖,這種現(xiàn)象稱為活鎖。342021/2/214、活鎖和死鎖(1)活鎖342021/2/21時刻事務T1事務T2事務T3事務T4t0t1t2t3t4t5t6t7t8t9Lock(A)Unlock(A)Lock(A)WaitWaitWaitWaitWaitWaitWaitWaitLock(A)WaitLock(A)Unlock(A)Lock(A)WaitWaitLock(A)...活鎖示意圖避免活鎖的最簡單方法是采用“先來先服務”的策略。352021/2/21時刻事務T1事務T2事務T3事務T4t0Lock(A)活鎖示(2)死鎖多個事務各自擁有對一定數(shù)據(jù)對象的封鎖,同時又在等待其他事務釋放封鎖才可以繼續(xù)執(zhí)行下去,這樣出現(xiàn)多個事務彼此互相等待的狀態(tài),稱之為死鎖。時刻事務T1事務T2t0t1t2t3t4t5t6Xlock(A)Xlock(B)WaitWaitWaitXlock(B)Xlock(A)WaitWait362021/2/21(2)死鎖多個事務各自擁有對一定數(shù)據(jù)對象的封鎖,同時又在等待(3)避免死鎖的方法a、一次封鎖法:要求每個事務一次性地將所有要使用的數(shù)據(jù)加鎖。主要缺點:擴大了封鎖的范圍,降低了系統(tǒng)的并發(fā)度,影響了系統(tǒng)的效率。b、順序封鎖法:要求所有事務必須按照一個預先約定的加鎖順序?qū)κ褂玫降臄?shù)據(jù)加鎖。主要缺點:預先難以確定所有數(shù)據(jù)對象的加鎖順序。372021/2/21(3)避免死鎖的方法a、一次封鎖法:要求每個事務一次性地將所c、有些系統(tǒng)先不采用避免死鎖的方法,而是由并發(fā)控制子系統(tǒng)檢測有無死鎖的發(fā)生,如有再設(shè)法解除死鎖。死鎖的檢測可以利用“事務依賴圖”方法。T1T2T3T4382021/2/21c、有些系統(tǒng)先不采用避免死鎖的方法,而是由并發(fā)控制子系統(tǒng)檢測五、兩段鎖協(xié)議1、兩段鎖協(xié)議將每個事務分為兩個階段,第一階段是擴展階段(申請封鎖階段),第二階段是收縮階段(釋放封鎖階段)。2、若并發(fā)執(zhí)行的各事務都遵守兩段鎖協(xié)議,則這些事務的任何并發(fā)調(diào)度都是可串行化的。但是,可串行化的調(diào)度中的各事務不一定遵守兩段鎖協(xié)議。392021/2/21五、兩段鎖協(xié)議1、兩段鎖協(xié)議將每個事務分為兩個階段,第一階段本章小結(jié)一、數(shù)據(jù)庫的安全性1、掌握授權(quán)和收回權(quán)限的SQL語句二、數(shù)據(jù)庫的安全性1、掌握事務的概念

2、掌握封鎖的概念以及各級封鎖的內(nèi)容

3、掌握并發(fā)調(diào)度中可能出現(xiàn)的問題及其解決的方法。402021/2/21本章小結(jié)一、數(shù)據(jù)庫的安全性1、掌握授權(quán)和收回權(quán)限的SQL語句謝謝!412021/2/21謝謝!412021/2/21數(shù)據(jù)庫課件第十章數(shù)據(jù)庫安全性和并發(fā)控制數(shù)據(jù)庫課件第十章數(shù)據(jù)庫安全性和并發(fā)控制數(shù)據(jù)庫課件第十章數(shù)據(jù)庫安全性和并發(fā)控制第十章

數(shù)據(jù)庫的安全性和并發(fā)控制422021/2/21數(shù)據(jù)庫課件第十章數(shù)據(jù)庫安全性和并發(fā)控制數(shù)據(jù)庫課件第十章數(shù)據(jù)庫第十章

數(shù)據(jù)庫的安全性和并發(fā)控制432021/2/21第十章

數(shù)據(jù)庫的安全性和并發(fā)控制22021/2/21第一節(jié)

數(shù)據(jù)庫的安全性一、數(shù)據(jù)庫的安全性

所謂數(shù)據(jù)庫的安全性是指保護數(shù)據(jù)以防止不合法的使用所造成的數(shù)據(jù)泄漏、更改和破壞。442021/2/21第一節(jié)數(shù)據(jù)庫的安全性一、數(shù)據(jù)庫的安全性所謂數(shù)二、數(shù)據(jù)庫的安全級別1、應用環(huán)境級2、操作系統(tǒng)級3、網(wǎng)絡級4、數(shù)據(jù)庫系統(tǒng)級452021/2/21二、數(shù)據(jù)庫的安全級別1、應用環(huán)境級2、操作系統(tǒng)級3、網(wǎng)絡級4三、存取控制1、用戶權(quán)限:用戶使用數(shù)據(jù)庫的方式。數(shù)據(jù)對象操作權(quán)限屬性列SELECT、INSERT、DELETE、UPDATE、ALLPRIVILEGES視圖SELECT、INSERT、DELETE、UPDATE、ALLPRIVILEGES基本表SELECT、INSERT、DELETE、UPDATE、ALTER、INDEX、ALLPRIVILEGES數(shù)據(jù)庫CREATETAB462021/2/21三、存取控制1、用戶權(quán)限:用戶使用數(shù)據(jù)庫的方式。數(shù)據(jù)對象操作2、授予權(quán)限GRANT<權(quán)限>[,<權(quán)限>]...[ON<數(shù)據(jù)對象>]TO<用戶>[,<用戶>]...[WITHGRANTOPTION];

WITHGRANTOPTION指獲得權(quán)限的用戶可以將權(quán)限授予其他用戶。472021/2/212、授予權(quán)限GRANT<權(quán)限>[,<權(quán)限>]...

例1DBA把Orders數(shù)據(jù)庫中建立基本表的權(quán)限授予用戶USER001和USER002。GRANTCREATETABONOrdersTOUSER001,USER002;482021/2/21例1DBA把Orders數(shù)據(jù)庫中建立基本表的

例2DBA把查詢Customer表的權(quán)限授予用戶USER003。GRANTSELECTONCustomerTOUSER003;492021/2/21例2DBA把查詢Customer表的權(quán)限授予用戶US

例3USER002把對Product表的查詢和修改Stock屬性列的權(quán)限授予用戶USER004,并允許USER004將此權(quán)限再轉(zhuǎn)授給其他用戶。GRANTSELECT,UPDATE(Stock)ONProductTOUSER004WITHGRANTOPTION502021/2/21例3USER002把對Product表的查詢

例4DBA把對Product表的所有權(quán)限授予所有用戶GRANTALLPRIVILEGESONProductTOPUBLIC注:此處“PUBLIC”指所有用戶。512021/2/21例4DBA把對Product表的所有權(quán)限授予所3、收回權(quán)限REVOKE<權(quán)限>[,<權(quán)限>]...[ON<數(shù)據(jù)對象>]FROM<用戶>[,<用戶>]...;522021/2/213、收回權(quán)限REVOKE<權(quán)限>[,<權(quán)限>]...1

例1將USER003對Customer表的查詢權(quán)限收回。REVOKESELECTONCustomerFROMUSER003532021/2/21例1將USER003對Customer表的查詢權(quán)限REVOKESELECT,UPDATE(Stock)ONProductFROMUSER004

例2將USER004對Product表的查詢和修改Stock屬性列的權(quán)限收回。542021/2/21REVOKESELECT,UPDATE(Stock)

例3DBA把USER001和USER002在Orders數(shù)據(jù)庫中建立基本表的權(quán)限收回。REVOKECRATETABONOrdersFROMUSER001,USER002;552021/2/21例3DBA把USER001和USER002第二節(jié)數(shù)據(jù)庫的并發(fā)控制一、事務

事務是數(shù)據(jù)庫的邏輯工作單位,由用戶定義的一組操作序列組成,序列中的操作要么全做,要么全不做。1、事務的定義562021/2/21第二節(jié)數(shù)據(jù)庫的并發(fā)控制一、事務事務是數(shù)據(jù)庫的邏輯工作2、事務的特性(1)原子性:事務中的操作要么不做,要么全做;(2)一致性:數(shù)據(jù)庫從一個一致狀態(tài)變?yōu)榱硪粋€一致狀態(tài);(3)隔離性:任一事務的執(zhí)行不受其他事務的干擾;(4)持續(xù)性:事務完成后其對數(shù)據(jù)庫的更改不會因系統(tǒng)故障而丟失。572021/2/212、事務的特性(1)原子性:事務中的操作要么不做,要么全做;二、事務的串行調(diào)度和并發(fā)調(diào)度1、調(diào)度事務的執(zhí)行次序。2、串行調(diào)度:多個事務按先后順序依次執(zhí)行。3、并行調(diào)度:多個事務同時交叉執(zhí)行。582021/2/21二、事務的串行調(diào)度和并發(fā)調(diào)度1、調(diào)度172021/2/214、實例有兩個事務T1和T2,它們都要訂購某日某車次的2張硬臥火車票和1張軟臥火車票,這兩個事務都包含下列操作592021/2/214、實例182021/2/21read(A);//從數(shù)據(jù)庫中讀出硬臥車票剩余數(shù)量AA=A-2;//訂購了2張車票,write(A);//將新的剩余硬臥車票數(shù)量A寫回數(shù)據(jù)庫write(B);//將新的剩余軟臥車票數(shù)量B寫回數(shù)據(jù)庫read(B);//從數(shù)據(jù)庫中讀出剩余軟臥車票數(shù)量BB=B-1;//訂購了1張車票602021/2/21read(A);//從數(shù)據(jù)庫中讀出硬臥車票剩余數(shù)量A對事務T1和T2執(zhí)行串行操作(硬、軟臥車票初始值為100和50)事務T1事務T2數(shù)據(jù)庫中的值read(A)A=A-2write(A)read(B)B=B-1write(B)read(A)A=A-2write(A)read(B)B=B-1write(B)A=50A=48B=100B=99A=48A=46B=99B=98串行調(diào)度1:先T1后T2事務T1事務T2數(shù)據(jù)庫中的值read(A)A=A-2write(A)read(B)B=B-1write(B)read(A)A=A-2write(A)read(B)B=B-1write(B)A=50A=48B=100B=99A=48A=46B=99B=98串行調(diào)度2:先T2后T1612021/2/21對事務T1和T2執(zhí)行串行操作(硬、軟臥車票初始值為100和5對事務T1和T2執(zhí)行并發(fā)操作(硬、軟臥車票初始值為100和50)事務T1事務T2數(shù)據(jù)庫中的值read(A)A=A-2write(A)read(B)B=B-1write(B)read(A)A=A-2write(A)read(B)B=B-1write(B)A=50A=48A=46B=100B=99B=98并發(fā)調(diào)度1事務T1事務T2數(shù)據(jù)庫中的值read(A)A=A-2write(A)read(B)B=B-1write(B)read(A)A=A-2write(A)read(B)B=B-1write(B)A=50A=48B=100A=48A=46B=100B=99B=99并發(fā)調(diào)度2622021/2/21對事務T1和T2執(zhí)行并發(fā)操作(硬、軟臥車票初始值為100和5

6、結(jié)論事務串行調(diào)度的結(jié)果總是正確的,而事務并發(fā)調(diào)度的結(jié)果則不一定完全正確。當多個事務并發(fā)調(diào)度的結(jié)果與串行調(diào)度的結(jié)果相同時,稱該并發(fā)調(diào)度是可串行化的調(diào)度。632021/2/216、結(jié)論222021/2/21三、事務并發(fā)執(zhí)行所帶來的問題1、丟失修改時刻事務T1事務T2數(shù)據(jù)庫中的值t0t1t2t3t4t5read(A)A=A-10write(A)read(A)A=A-5write(A)A=50A=50A=40A=45642021/2/21三、事務并發(fā)執(zhí)行所帶來的問題1、丟失修改時刻事務T1事務T22、不可重復讀時刻事務T1事務T2數(shù)據(jù)庫中的值t0t1t2t3t4t5t6t7t8read(A)read(B)求和:A+B=150read(A)read(B)求和:A+B=350read(A)A=A+200write(A)A=50,B=100A=250652021/2/212、不可重復讀時刻事務T1事務T2數(shù)據(jù)庫中的值t0read(3、讀“臟”數(shù)據(jù)時刻事務T1事務T2數(shù)據(jù)庫中的值t0t1t2t3t4read(A)A=A*3write(A)ROLLBACKread(A)A=50A=150A=150A=50662021/2/213、讀“臟”數(shù)據(jù)時刻事務T1事務T2數(shù)據(jù)庫中的值t0read四、封鎖1、封鎖的含義封鎖就是事務T在對數(shù)據(jù)對象進行操作前,先向系統(tǒng)發(fā)出對數(shù)據(jù)對象的加鎖請求,在獲得系統(tǒng)批準后才能對數(shù)據(jù)對象進行操作,其他事務不能對加鎖的數(shù)據(jù)對象進行操作。672021/2/21四、封鎖1、封鎖的含義262021/2/212、封鎖的兩種基本類型

(1)排它鎖(X封鎖、寫鎖)

數(shù)據(jù)對象被加上X封鎖之后,其他事務不能再對該數(shù)據(jù)對象實施任何封鎖。

(2)共享鎖(S封鎖、讀鎖)

數(shù)據(jù)對象被加上S封鎖之后,其他事務只能對該數(shù)據(jù)對象實施S封鎖。T2T1XS-XNNYSNYY-YYY682021/2/212、封鎖的兩種基本類型T2XS-3、封鎖協(xié)議(1)一級封鎖協(xié)議內(nèi)容:事務T在更新數(shù)據(jù)對象A以前,必須對數(shù)據(jù)對象A加X鎖,且直到事務T結(jié)束時才可以釋放該鎖。注意:一級封鎖可以防止“丟失修改”。692021/2/213、封鎖協(xié)議(1)一級封鎖協(xié)議282021/2/21時刻事務T1事務T2數(shù)據(jù)庫中的值t0t1t2t3t4t5t6t7t8t9t10Xlock(A)read(A)A=A-10write(A)CommitUnlock(A)Xlock(A)WaitWaitWaitWaitXlock(A)read(A)A=A-5write(A)A=50A=40A=40A=35一級封鎖時刻事務T1事務T2數(shù)據(jù)庫中的值t0t1t2t3t4t5read(A)A=A-10write(A)read(A)A=A-5write(A)A=50A=50A=40A=45修改丟失702021/2/21時刻事務T1事務T2數(shù)據(jù)庫中的值t0Xlock(A)一級封鎖(2)二級封鎖協(xié)議內(nèi)容:事務T在更新數(shù)據(jù)對象A以前,必須對數(shù)據(jù)對象A加X鎖,且直到事務T結(jié)束時才可以釋放該鎖,還規(guī)定事務T在讀取數(shù)據(jù)對象B以前必須先對其加S鎖,讀完后即可釋放S鎖。注意:二級封鎖可以防止“丟失修改”和“讀臟數(shù)據(jù)”712021/2/21(2)二級封鎖協(xié)議內(nèi)容:事務T在更新數(shù)據(jù)對象A以前,必須對數(shù)時刻事務T1事務T2數(shù)據(jù)庫中的值t0t1t2t3t4t5t6t7t8t9Xlock(A)read(A)A=A*3write(A)ROLLBACKUnlock(A)Slock(A)WaitWaitSlock(A)read(A)A=50A=150A=50A=50時刻事務T1事務T2數(shù)據(jù)庫中的值t0t1t2t3t4t5read(A)A=A*3write(A)ROLLBACKread(A)A=50A=150A=150A=50讀臟數(shù)據(jù)二級封鎖722021/2/21時刻事務T1事務T2數(shù)據(jù)庫中的值t0Xlock(A)A=50(3)三級封鎖協(xié)議內(nèi)容:事務T在更新數(shù)據(jù)對象A以前,必須對數(shù)據(jù)對象A加X鎖,且直到事務T結(jié)束時才可以釋放該鎖,還規(guī)定事務T在讀取數(shù)據(jù)對象B以前必須先對其加S鎖,該鎖也必須在事務T結(jié)束時才可釋放。注意:三級封鎖可以防止“修改丟失”、“讀臟數(shù)據(jù)”、“不可重復讀”。732021/2/21(3)三級封鎖協(xié)議內(nèi)容:事務T在更新數(shù)據(jù)對象A以前,必須對數(shù)時刻事務T1事務T2數(shù)據(jù)庫中的值t0t1t2t3t4t5t6t7t8read(A)read(B)A+B=150read(A)read(B)A+B=350read(A)A=A+200write(A)A=50B=100A=250時刻事務T1事務T2數(shù)據(jù)庫中的值t0t1t2t3t4t5t6t7t8t9t10t11t12t13t14t15t16t17Slock(A)Slock(B)read(A)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論