




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、第七章第七章 數(shù)據(jù)庫事務(wù)管理數(shù)據(jù)庫事務(wù)管理z7.1 事務(wù)與事務(wù)管理事務(wù)與事務(wù)管理 7.1.1 事務(wù)概念與性質(zhì)事務(wù)概念與性質(zhì) 7.1.2 事務(wù)操作與狀態(tài)事務(wù)操作與狀態(tài) 7.1.3 SQL事務(wù)機(jī)制事務(wù)機(jī)制z7.2 并發(fā)控制技術(shù)并發(fā)控制技術(shù)z7.3 數(shù)據(jù)庫故障恢復(fù)數(shù)據(jù)庫故障恢復(fù)Thinkingz 選修表的外部鍵選修表的外部鍵學(xué)號學(xué)號引用了學(xué)生表的主鍵,參照動作引用了學(xué)生表的主鍵,參照動作為為RESTRICT。z 則以下語句最終刪除了幾條記錄?則以下語句最終刪除了幾條記錄?學(xué)生學(xué)生學(xué)學(xué) 號號姓姓 名名性別性別年級年級201204王小明王小明男男2012201206張艷張艷女女2012201208黃大鵬
2、黃大鵬男男2012201312劉芳劉芳女女2013201326李蘭秋李蘭秋女女2013選修選修學(xué)學(xué) 號號課程號課程號成績成績201208H3035NULLDelete From 學(xué)生學(xué)生 Where 年級年級=2012事務(wù)概念事務(wù)概念z事務(wù)定義事務(wù)定義v事務(wù)是事務(wù)是DBMS的基本執(zhí)行單位,由一序列的數(shù)的基本執(zhí)行單位,由一序列的數(shù)據(jù)庫訪問和修改操作組成。這些操作要么全做,據(jù)庫訪問和修改操作組成。這些操作要么全做,要么全不做,是一個不可分割的整體。要么全不做,是一個不可分割的整體。 w例如銀行轉(zhuǎn)帳事務(wù)由兩個操作組成:例如銀行轉(zhuǎn)帳事務(wù)由兩個操作組成: 轉(zhuǎn)出帳戶轉(zhuǎn)出帳戶A 減去某一金額(減去某一金額(
3、A=A?) 轉(zhuǎn)入帳戶轉(zhuǎn)入帳戶B 增加相同金額(增加相同金額(B=B + ?) 這兩個操作放在同一個事務(wù)里完成,要么全做,這兩個操作放在同一個事務(wù)里完成,要么全做,要么全不做。要么全不做。事務(wù)的事務(wù)的ACID性質(zhì)性質(zhì)z原子性原子性 (Atomicity)v事務(wù)中包含的所有操作事務(wù)中包含的所有操作(特指修改操作特指修改操作)要么全部做,要要么全部做,要么全不做。么全不做。w例如某個轉(zhuǎn)帳事務(wù):對帳戶例如某個轉(zhuǎn)帳事務(wù):對帳戶A扣除扣除100,對帳戶,對帳戶B增增加加100。這兩個操作要么全做,要么全不做。這兩個操作要么全做,要么全不做v原子性由原子性由恢復(fù)機(jī)制恢復(fù)機(jī)制(7.3)實現(xiàn)實現(xiàn)事務(wù)的事務(wù)的AC
4、ID性質(zhì)性質(zhì)z一致性一致性(Consistency)v單獨(dú)執(zhí)行一個事務(wù)(無其它事務(wù)同時并發(fā)執(zhí)行)的結(jié)單獨(dú)執(zhí)行一個事務(wù)(無其它事務(wù)同時并發(fā)執(zhí)行)的結(jié)果必須保證數(shù)據(jù)一致性。即事務(wù)開始前,數(shù)據(jù)滿足一果必須保證數(shù)據(jù)一致性。即事務(wù)開始前,數(shù)據(jù)滿足一致性要求;事務(wù)結(jié)束后,數(shù)據(jù)雖然可能被修改了,但致性要求;事務(wù)結(jié)束后,數(shù)據(jù)雖然可能被修改了,但仍然滿足一致性的要求。仍然滿足一致性的要求。w這里數(shù)據(jù)一致性要求,根據(jù)具體應(yīng)用而定。這里數(shù)據(jù)一致性要求,根據(jù)具體應(yīng)用而定。例如在銀行系統(tǒng)中,轉(zhuǎn)帳事務(wù)的一致性要求是前后例如在銀行系統(tǒng)中,轉(zhuǎn)帳事務(wù)的一致性要求是前后兩個帳戶的金額總和不變。假如一個事務(wù)為帳戶兩個帳戶的金額總和
5、不變。假如一個事務(wù)為帳戶A減減去去100,為帳戶,為帳戶B加上加上50,那么這個事務(wù)就違反了一,那么這個事務(wù)就違反了一致性。致性。事務(wù)的事務(wù)的ACID性質(zhì)性質(zhì)v保證單個事務(wù)的一致性,由編寫事務(wù)的應(yīng)用程序員來保證單個事務(wù)的一致性,由編寫事務(wù)的應(yīng)用程序員來負(fù)責(zé),并借助負(fù)責(zé),并借助完整性機(jī)制完整性機(jī)制(6.3)來協(xié)助實現(xiàn)。來協(xié)助實現(xiàn)。w也就是說,如果有數(shù)據(jù)一致性要求(例如轉(zhuǎn)賬前后總和也就是說,如果有數(shù)據(jù)一致性要求(例如轉(zhuǎn)賬前后總和不變)不變) ,可以將其定義成某些完整性規(guī)則。,可以將其定義成某些完整性規(guī)則。事務(wù)的事務(wù)的ACID性質(zhì)性質(zhì)z隔離性隔離性 (Isolation)v多個事務(wù)在并發(fā)執(zhí)行時不會相
6、互影響,好像它們是隔離開來多個事務(wù)在并發(fā)執(zhí)行時不會相互影響,好像它們是隔離開來的一樣。最后的效果,與按某個順序依次執(zhí)行這些事務(wù)是一的一樣。最后的效果,與按某個順序依次執(zhí)行這些事務(wù)是一樣的。樣的。v隔離性要求一個事務(wù),隔離性要求一個事務(wù),不會看到另一事務(wù)的中間結(jié)果不會看到另一事務(wù)的中間結(jié)果。w例如一個事務(wù)例如一個事務(wù)T1讀取的數(shù)據(jù),讀取的數(shù)據(jù),一部分是一部分是事務(wù)事務(wù)T2修改前修改前的數(shù)據(jù),的數(shù)據(jù),一部分是一部分是事務(wù)事務(wù)T2修改后修改后的數(shù)據(jù),這就違反了隔離性,并可能的數(shù)據(jù),這就違反了隔離性,并可能導(dǎo)致數(shù)據(jù)錯誤。導(dǎo)致數(shù)據(jù)錯誤。w兩個數(shù)據(jù)兩個數(shù)據(jù) A=a1, B=b1 事務(wù)事務(wù)T2發(fā)生發(fā)生 A=
7、a2, B=b2事務(wù)事務(wù)T1讀讀 A=a1, B=b1 正確正確 A=a2, B=b2 正確正確 A=a2, B=b1 錯誤錯誤 A=a1, B=b2 錯誤錯誤v隔離性通過隔離性通過并發(fā)控制機(jī)制并發(fā)控制機(jī)制(7.2)實現(xiàn)實現(xiàn)事務(wù)的事務(wù)的ACID性質(zhì)性質(zhì)z持久性持久性(Durability)v事務(wù)一旦提交,它對數(shù)據(jù)庫的影響就是永久性的。無事務(wù)一旦提交,它對數(shù)據(jù)庫的影響就是永久性的。無論發(fā)生什么事情,都不能取消這種影響。論發(fā)生什么事情,都不能取消這種影響。v例如一個事務(wù)將例如一個事務(wù)將50元從帳戶元從帳戶A轉(zhuǎn)到帳戶轉(zhuǎn)到帳戶B,此事務(wù)一旦,此事務(wù)一旦提交,這種交易是無法悔改的提交,這種交易是無法悔改
8、的即便發(fā)生故障,也即便發(fā)生故障,也不能把這不能把這50元元“還還”回去?;厝?。v持久性通過持久性通過恢復(fù)機(jī)制恢復(fù)機(jī)制(7.3)實現(xiàn)實現(xiàn)事務(wù)狀態(tài)與操作事務(wù)狀態(tài)與操作失敗狀態(tài)失敗狀態(tài)部分部分提交狀態(tài)提交狀態(tài)中止?fàn)顟B(tài)中止?fàn)顟B(tài)活動狀態(tài)活動狀態(tài)執(zhí)行執(zhí)行執(zhí)行全部執(zhí)行全部語句成功語句成功提交提交提交完畢提交完畢回滾回滾回滾完畢回滾完畢執(zhí)行某個執(zhí)行某個語句失敗語句失敗永久化信息永久化信息寫入失敗寫入失敗事務(wù)事務(wù)開始開始提交狀態(tài)提交狀態(tài)逐個語句逐個語句永久化每個修改(寫入到日志)永久化每個修改(寫入到日志)把數(shù)據(jù)改回舊值把數(shù)據(jù)改回舊值事務(wù)結(jié)束狀態(tài)之二事務(wù)結(jié)束狀態(tài)之二事務(wù)結(jié)束狀態(tài)之一事務(wù)結(jié)束狀態(tài)之一事務(wù)狀態(tài)與操作
9、事務(wù)狀態(tài)與操作z 活動狀態(tài)活動狀態(tài)v 事務(wù)開始后進(jìn)入事務(wù)開始后進(jìn)入v 事務(wù)處于本狀態(tài)時,依次執(zhí)行事務(wù)中的每條語句事務(wù)處于本狀態(tài)時,依次執(zhí)行事務(wù)中的每條語句z 部分提交狀態(tài)部分提交狀態(tài)(教材:局部提交狀態(tài)教材:局部提交狀態(tài))v 執(zhí)行完事務(wù)的全部語句后進(jìn)入執(zhí)行完事務(wù)的全部語句后進(jìn)入v 事務(wù)處于本狀態(tài)時,將已做的每個修改操作提交,即永久化寫入事務(wù)處于本狀態(tài)時,將已做的每個修改操作提交,即永久化寫入到日志中。這樣即使修改操作后來丟失了(例如數(shù)據(jù)庫崩潰),到日志中。這樣即使修改操作后來丟失了(例如數(shù)據(jù)庫崩潰),也能根據(jù)日志來恢復(fù)它也能根據(jù)日志來恢復(fù)它z 提交狀態(tài)提交狀態(tài)v提交完全部修改操作后進(jìn)入提交完全
10、部修改操作后進(jìn)入v事務(wù)處于本狀態(tài)時,事務(wù)結(jié)束。為事務(wù)的結(jié)束狀態(tài)之一事務(wù)處于本狀態(tài)時,事務(wù)結(jié)束。為事務(wù)的結(jié)束狀態(tài)之一事務(wù)狀態(tài)與操作事務(wù)狀態(tài)與操作z 失敗狀態(tài)失敗狀態(tài)v 在活動狀態(tài)中,執(zhí)行某條語句失敗時進(jìn)入;或者在部分提交狀態(tài)在活動狀態(tài)中,執(zhí)行某條語句失敗時進(jìn)入;或者在部分提交狀態(tài)中,提交永久化信息失敗時進(jìn)入中,提交永久化信息失敗時進(jìn)入v 事務(wù)處于本狀態(tài)時,不斷回滾已經(jīng)發(fā)生的修改操作,即把數(shù)據(jù)改事務(wù)處于本狀態(tài)時,不斷回滾已經(jīng)發(fā)生的修改操作,即把數(shù)據(jù)改成原來的舊值。成原來的舊值。z 中止?fàn)顟B(tài)中止?fàn)顟B(tài)v回滾全部修改操作后進(jìn)入回滾全部修改操作后進(jìn)入v事務(wù)處于本狀態(tài)時,事務(wù)結(jié)束。為事務(wù)的結(jié)束狀態(tài)之二事務(wù)處
11、于本狀態(tài)時,事務(wù)結(jié)束。為事務(wù)的結(jié)束狀態(tài)之二Thinkingz執(zhí)行一個事務(wù)時,可能經(jīng)過哪些狀態(tài)序列執(zhí)行一個事務(wù)時,可能經(jīng)過哪些狀態(tài)序列v活動狀態(tài)活動狀態(tài) 部分提交狀態(tài)部分提交狀態(tài) 提交狀態(tài)提交狀態(tài)v活動狀態(tài)活動狀態(tài) 失敗狀態(tài)失敗狀態(tài) 中止?fàn)顟B(tài)中止?fàn)顟B(tài)v活動狀態(tài)活動狀態(tài) 部分提交狀態(tài)部分提交狀態(tài) 失敗狀態(tài)失敗狀態(tài) 中止?fàn)顟B(tài)中止?fàn)顟B(tài)SQL中的事務(wù)中的事務(wù)z相關(guān)語句相關(guān)語句vBegin Transaction w開始事務(wù)開始事務(wù)vCommit (Transaction) w提交事務(wù)。此時事務(wù)正常結(jié)束,事務(wù)所做的修改操作都提交事務(wù)。此時事務(wù)正常結(jié)束,事務(wù)所做的修改操作都有效且有效且永久地永久地寫入數(shù)據(jù)庫
12、寫入數(shù)據(jù)庫vRollback (Transaction) w回滾事務(wù)。此時事務(wù)非正常結(jié)束,事務(wù)所做的修改操作回滾事務(wù)。此時事務(wù)非正常結(jié)束,事務(wù)所做的修改操作都無效且必須都無效且必須撤銷撤銷(Undo,數(shù)據(jù)改回舊值,數(shù)據(jù)改回舊值)。w回滾后,數(shù)據(jù)庫回退到事務(wù)開始前的狀態(tài),就好像事務(wù)回滾后,數(shù)據(jù)庫回退到事務(wù)開始前的狀態(tài),就好像事務(wù)從來沒有發(fā)生過一樣。從來沒有發(fā)生過一樣。SQL中的事務(wù)中的事務(wù)z兩種說明方式兩種說明方式v事務(wù)的顯式方式事務(wù)的顯式方式w用戶明確說明一個事務(wù)的開始(用戶明確說明一個事務(wù)的開始(Begin Transaction語句)語句)和結(jié)束(用和結(jié)束(用Commit/Rollback
13、語句)。語句)。v事務(wù)的隱式方式事務(wù)的隱式方式w不需明確說明一個事務(wù)的開始(有時也不說明結(jié)束)不需明確說明一個事務(wù)的開始(有時也不說明結(jié)束)比如從第一個有效的比如從第一個有效的DML語句開始事務(wù)。語句開始事務(wù)。遇到明確的遇到明確的Commit/Rollback結(jié)束一個事務(wù)。結(jié)束一個事務(wù)。遇到遇到Create Table、Drop Table、Create View,Create Index等等DDL語句,語句, (提交上一個事務(wù)后)啟動一個新的(提交上一個事務(wù)后)啟動一個新的事務(wù)。事務(wù)。SQL中的事務(wù)中的事務(wù)z注意注意v事務(wù)沒有執(zhí)行完事務(wù)沒有執(zhí)行完Commit之前,因某種原因(故障)而之前,因
14、某種原因(故障)而終止了,那么系統(tǒng)就會自動地回滾這個事務(wù)。終止了,那么系統(tǒng)就會自動地回滾這個事務(wù)。v判斷判斷SQL語句屬于哪個事務(wù)語句屬于哪個事務(wù)( SQL SERVER中,默認(rèn)顯式事務(wù)下中,默認(rèn)顯式事務(wù)下)w如果如果SQL語句處于某個事務(wù)的語句處于某個事務(wù)的Begin transaction和和Commit/Rollback之間,那么它就屬于這個事務(wù)。之間,那么它就屬于這個事務(wù)。w如果以上不成立,那么這個如果以上不成立,那么這個SQL語句本身構(gòu)成一個獨(dú)立語句本身構(gòu)成一個獨(dú)立的事務(wù)。的事務(wù)。Thinkingz下面的下面的SQL Server程序包含幾個事務(wù)程序包含幾個事務(wù)? z思考,如果執(zhí)行完
15、第一個思考,如果執(zhí)行完第一個update語句之后、沒有語句之后、沒有執(zhí)行第二個執(zhí)行第二個update語句之前,系統(tǒng)斷電。那么在語句之前,系統(tǒng)斷電。那么在重啟以后,兩個帳戶的金額會發(fā)生什么樣的變化重啟以后,兩個帳戶的金額會發(fā)生什么樣的變化?Begin Transaction Update account set money= money 50 where no=AUpdate account set money= money 50 where no=BCommitThinkingz下面的下面的SQL Server程序包含幾個事務(wù)程序包含幾個事務(wù)? z思考,如果執(zhí)行完第一個思考,如果執(zhí)行完第一個u
16、pdate語句之后、沒有語句之后、沒有執(zhí)行第二個執(zhí)行第二個update語句之前,系統(tǒng)斷電。那么在語句之前,系統(tǒng)斷電。那么在重啟以后,兩個帳戶的金額會發(fā)生什么樣的變化重啟以后,兩個帳戶的金額會發(fā)生什么樣的變化?Update account set money= money 50 where no=AUpdate account set money= money 50 where no=BThinkingz 選修表的外部鍵選修表的外部鍵學(xué)號學(xué)號引用了學(xué)生表的主鍵,參照動作引用了學(xué)生表的主鍵,參照動作為為RESTRICT。z 則以下語句最終刪除了幾條記錄?則以下語句最終刪除了幾條記錄?學(xué)生學(xué)生學(xué)學(xué)
17、號號姓姓 名名性別性別年級年級201204王小明王小明男男2012201206張艷張艷女女2012201208黃大鵬黃大鵬男男2012201312劉芳劉芳女女2013201326李蘭秋李蘭秋女女2013選修選修學(xué)學(xué) 號號課程號課程號成績成績201208H3035NULLDelete From 學(xué)生學(xué)生 Where 年級年級=2012目錄目錄z7.1 事務(wù)與事務(wù)管理事務(wù)與事務(wù)管理z7.2 并發(fā)控制技術(shù)并發(fā)控制技術(shù) 7.2.1 事務(wù)并發(fā)執(zhí)行事務(wù)并發(fā)執(zhí)行 7.2.2 并發(fā)引起不一致問題并發(fā)引起不一致問題 7.2.3 并發(fā)執(zhí)行正確性準(zhǔn)則概述并發(fā)執(zhí)行正確性準(zhǔn)則概述 7.2.4 并發(fā)控制基本技術(shù)并發(fā)控制基
18、本技術(shù) 7.2.5 封鎖協(xié)議封鎖協(xié)議 7.2.6 活鎖與死鎖活鎖與死鎖 7.2.7 多粒度封鎖多粒度封鎖z7.3 數(shù)據(jù)庫故障恢復(fù)數(shù)據(jù)庫故障恢復(fù)兩種事務(wù)調(diào)度兩種事務(wù)調(diào)度z事務(wù)調(diào)度事務(wù)調(diào)度v系統(tǒng)以什么時間順序執(zhí)行系統(tǒng)以什么時間順序執(zhí)行(進(jìn)入系統(tǒng)的)(進(jìn)入系統(tǒng)的)一組事務(wù)一組事務(wù)/ /事事務(wù)的指令務(wù)的指令w雖然在微觀上,這組事務(wù)是先后到達(dá)系統(tǒng)的,但宏觀上雖然在微觀上,這組事務(wù)是先后到達(dá)系統(tǒng)的,但宏觀上可能是可能是“同時同時”到達(dá)系統(tǒng):即上一個事務(wù)還沒結(jié)束時,到達(dá)系統(tǒng):即上一個事務(wù)還沒結(jié)束時,下一個事務(wù)又進(jìn)入了系統(tǒng)。下一個事務(wù)又進(jìn)入了系統(tǒng)。兩種事務(wù)調(diào)度兩種事務(wù)調(diào)度z串行調(diào)度串行調(diào)度(教材:串行執(zhí)行教材
19、:串行執(zhí)行) v當(dāng)前一個事務(wù)完全結(jié)束后,下一個事務(wù)才開始執(zhí)行。當(dāng)前一個事務(wù)完全結(jié)束后,下一個事務(wù)才開始執(zhí)行。v特點:從時間順序看,同一事務(wù)的指令緊挨在一起。特點:從時間順序看,同一事務(wù)的指令緊挨在一起。z并發(fā)調(diào)度并發(fā)調(diào)度(教材:并發(fā)執(zhí)行教材:并發(fā)執(zhí)行) v未執(zhí)行完一個事務(wù),可轉(zhuǎn)去執(zhí)行另一事務(wù)。未執(zhí)行完一個事務(wù),可轉(zhuǎn)去執(zhí)行另一事務(wù)。w事務(wù)的執(zhí)行時間重疊,宏觀上多個事務(wù)同時執(zhí)行,微觀事務(wù)的執(zhí)行時間重疊,宏觀上多個事務(wù)同時執(zhí)行,微觀上這些事務(wù)交叉或者說分時執(zhí)行上這些事務(wù)交叉或者說分時執(zhí)行。v特點:從時間順序看,不同事務(wù)的指令彼此交叉。特點:從時間順序看,不同事務(wù)的指令彼此交叉。并發(fā)調(diào)度的優(yōu)勢并發(fā)調(diào)度
20、的優(yōu)勢z并發(fā)調(diào)度并發(fā)調(diào)度 VS 串行調(diào)度串行調(diào)度v不同事務(wù)的不同指令,涉及的系統(tǒng)資源也不同。同時不同事務(wù)的不同指令,涉及的系統(tǒng)資源也不同。同時執(zhí)行這些指令,執(zhí)行這些指令,可以提高可以提高資源利用率資源利用率和和系統(tǒng)吞吐量系統(tǒng)吞吐量w例如,事務(wù)例如,事務(wù)A和事務(wù)和事務(wù)B,都由指令都由指令1(要求要求CPU計算計算)和指令和指令2(要求要求I/O)組成。組成。CPU和和I/O設(shè)備是可以并行工作的,所設(shè)備是可以并行工作的,所以并發(fā)執(zhí)行事務(wù)以并發(fā)執(zhí)行事務(wù)A的指令的指令2和事務(wù)和事務(wù)B的指令的指令1時,可以避免時,可以避免資源閑置和縮短總執(zhí)行時間。資源閑置和縮短總執(zhí)行時間。并發(fā)調(diào)度的優(yōu)勢并發(fā)調(diào)度的優(yōu)勢v
21、系統(tǒng)中存在著周期不等的各種事務(wù),串行調(diào)度導(dǎo)致短系統(tǒng)中存在著周期不等的各種事務(wù),串行調(diào)度導(dǎo)致短事務(wù)可能要等待長事務(wù)的完成。而采用并發(fā)調(diào)度,靈事務(wù)可能要等待長事務(wù)的完成。而采用并發(fā)調(diào)度,靈活決定事務(wù)的執(zhí)行順序,活決定事務(wù)的執(zhí)行順序,可以減少可以減少平均響應(yīng)時間平均響應(yīng)時間w例如,需時為例如,需時為10分鐘的事務(wù)分鐘的事務(wù)A開始開始2分鐘后,需時為分鐘后,需時為1分分鐘的事務(wù)鐘的事務(wù)B進(jìn)入系統(tǒng)。對于串行調(diào)度,等待事務(wù)進(jìn)入系統(tǒng)。對于串行調(diào)度,等待事務(wù)A完成后完成后才能執(zhí)行事務(wù)才能執(zhí)行事務(wù)B;對于并發(fā)調(diào)度,可以立刻轉(zhuǎn)去執(zhí)行事對于并發(fā)調(diào)度,可以立刻轉(zhuǎn)去執(zhí)行事務(wù)務(wù)B,再回頭執(zhí)行事務(wù),再回頭執(zhí)行事務(wù)Aw思考:
22、比較兩者的平均響應(yīng)時間思考:比較兩者的平均響應(yīng)時間? 響應(yīng)時間響應(yīng)時間事務(wù)進(jìn)入事務(wù)進(jìn)入系統(tǒng)到事務(wù)完成的時間差事務(wù)等待的時間系統(tǒng)到事務(wù)完成的時間差事務(wù)等待的時間+事務(wù)執(zhí)行的事務(wù)執(zhí)行的時間時間事務(wù)調(diào)度例子事務(wù)調(diào)度例子z事務(wù)的表示事務(wù)的表示T:read(A);A := A 50;write(A);read(B);B := B + 50;write(B);vread(X): 把數(shù)據(jù)把數(shù)據(jù)X從從數(shù)據(jù)庫數(shù)據(jù)庫讀出到事務(wù)的讀出到事務(wù)的私有緩沖私有緩沖中中vwrite(X): 把數(shù)據(jù)把數(shù)據(jù)X從事務(wù)的從事務(wù)的私有緩沖私有緩沖中寫回到中寫回到數(shù)據(jù)庫數(shù)據(jù)庫帳戶帳戶A減去減去50帳戶帳戶B加上加上50事務(wù)調(diào)度例子事務(wù)
23、調(diào)度例子z數(shù)據(jù)一致性要求:數(shù)據(jù)一致性要求:A、B總和不變總和不變v思考:事務(wù)思考:事務(wù)T1、T2是否具有一致性是否具有一致性?事務(wù)事務(wù)T1read(A);A := A 100;write(A);read(B);B := B + 100;write(B);從從A轉(zhuǎn)帳轉(zhuǎn)帳100到到B從從A轉(zhuǎn)帳轉(zhuǎn)帳200到到B事務(wù)事務(wù)T2read(A);A := A 200;write(A);read(B);B := B + 200;write(B);開始狀態(tài)開始狀態(tài)A=1000B= 0事務(wù)調(diào)度例子事務(wù)調(diào)度例子z串行調(diào)度串行調(diào)度1v調(diào)度的結(jié)果是否保證調(diào)度的結(jié)果是否保證了數(shù)據(jù)一致性了數(shù)據(jù)一致性? read(A); A
24、 := A 100; write(A); read(B); B := B +100; write(B); read(A); A := A 200; write(A); read(B); B := B + 200; write(B);T1T2A=900B=100結(jié)束狀態(tài)結(jié)束狀態(tài)A=700B=300開始狀態(tài)開始狀態(tài)A=1000B= 0開始狀態(tài)開始狀態(tài)A=1000B= 0事務(wù)調(diào)度例子事務(wù)調(diào)度例子z串行調(diào)度串行調(diào)度2v調(diào)度的結(jié)果是否保證調(diào)度的結(jié)果是否保證了數(shù)據(jù)一致性了數(shù)據(jù)一致性?v思考:所有串行調(diào)度都思考:所有串行調(diào)度都能保證數(shù)據(jù)一致性嗎?能保證數(shù)據(jù)一致性嗎? read(A); A := A 100;
25、 write(A); read(B); B := B +100; write(B); read(A); A := A 200; write(A); read(B); B := B + 200; write(B);T1T2A=800B=200結(jié)束狀態(tài)結(jié)束狀態(tài)A=700B=300事務(wù)調(diào)度例子事務(wù)調(diào)度例子z并發(fā)調(diào)度并發(fā)調(diào)度1v調(diào)度的結(jié)果是否保證調(diào)度的結(jié)果是否保證了數(shù)據(jù)一致性了數(shù)據(jù)一致性?v思考:思考:T1、T2讀寫的是讀寫的是對方修改前對方修改前/后的數(shù)據(jù)?后的數(shù)據(jù)? read(B); B := B +100; write(B); read(A); A := A 200; write(A); T1T
26、2A=700B= 0結(jié)束狀態(tài)結(jié)束狀態(tài)A=700B=300 read(B); B := B + 200; write(B); read(A); A := A 100; write(A);A=800B= 0A=700B=200事務(wù)調(diào)度例子事務(wù)調(diào)度例子z并發(fā)調(diào)度并發(fā)調(diào)度2v調(diào)度的結(jié)果是否保證調(diào)度的結(jié)果是否保證了數(shù)據(jù)一致性了數(shù)據(jù)一致性?v思考:思考:T1、T2讀寫的是讀寫的是對方修改前對方修改前/后的數(shù)據(jù)?后的數(shù)據(jù)? read(B); B := B +100; write(B); read(A); A := A 200;T1T2A=900B= 0結(jié)束狀態(tài)結(jié)束狀態(tài)A=800B=300 write(A);
27、 read(B); B := B + 200; write(B); read(A); A := A 100; write(A);A=1000B= 0A=800B=200小結(jié)小結(jié)z保證單個事務(wù)一致性的情況下,保證單個事務(wù)一致性的情況下,v多個事務(wù)串行調(diào)度時,不會破壞數(shù)據(jù)一致性。多個事務(wù)串行調(diào)度時,不會破壞數(shù)據(jù)一致性。v多個事務(wù)并發(fā)調(diào)度時,可能會、也可能不會破壞數(shù)據(jù)多個事務(wù)并發(fā)調(diào)度時,可能會、也可能不會破壞數(shù)據(jù)一致性。一致性。w取決于并發(fā)調(diào)度有否違反隔離性。取決于并發(fā)調(diào)度有否違反隔離性。并發(fā)調(diào)度的問題并發(fā)調(diào)度的問題z并發(fā)調(diào)度的問題:可能破壞數(shù)據(jù)一致性并發(fā)調(diào)度的問題:可能破壞數(shù)據(jù)一致性v即使單個事務(wù)
28、的執(zhí)行不會破壞數(shù)據(jù)一致性,多個這樣即使單個事務(wù)的執(zhí)行不會破壞數(shù)據(jù)一致性,多個這樣的事務(wù)在并發(fā)調(diào)度時,也可能破壞數(shù)據(jù)一致性。的事務(wù)在并發(fā)調(diào)度時,也可能破壞數(shù)據(jù)一致性。z產(chǎn)生問題的原因產(chǎn)生問題的原因: 事務(wù)隔離性未得到保證事務(wù)隔離性未得到保證v隔離性要求事務(wù)隔離性要求事務(wù)T1不能看到另一個事務(wù)不能看到另一個事務(wù)T2的中間結(jié)果的中間結(jié)果(一部分?jǐn)?shù)據(jù)是修改前的,一部分?jǐn)?shù)據(jù)是修改后的)(一部分?jǐn)?shù)據(jù)是修改前的,一部分?jǐn)?shù)據(jù)是修改后的)v但在并發(fā)執(zhí)行的情況下,有時沒有做到這一點但在并發(fā)執(zhí)行的情況下,有時沒有做到這一點z解決方法(解決方法(正確性準(zhǔn)則正確性準(zhǔn)則): 使并發(fā)調(diào)度使并發(fā)調(diào)度可串行化可串行化v事務(wù)的串
29、行調(diào)度顯然不會破壞數(shù)據(jù)一致性事務(wù)的串行調(diào)度顯然不會破壞數(shù)據(jù)一致性v如果事務(wù)的并發(fā)調(diào)度是可串行化的,如果事務(wù)的并發(fā)調(diào)度是可串行化的,即效果上等價于即效果上等價于某個串行調(diào)度時某個串行調(diào)度時,也不會破壞數(shù)據(jù)一致性,也不會破壞數(shù)據(jù)一致性再小結(jié)再小結(jié)z保證單個事務(wù)一致性的情況下,保證單個事務(wù)一致性的情況下,v任何串行調(diào)度,不會破壞數(shù)據(jù)一致性。任何串行調(diào)度,不會破壞數(shù)據(jù)一致性。v保證隔離性保證隔離性/可串行化的并發(fā)調(diào)度,也不會破壞數(shù)據(jù)一可串行化的并發(fā)調(diào)度,也不會破壞數(shù)據(jù)一致性。致性。v隔離性得不到保證隔離性得不到保證/不可串行化,可能會破壞數(shù)據(jù)一致不可串行化,可能會破壞數(shù)據(jù)一致性,產(chǎn)生錯誤。性,產(chǎn)生錯誤
30、。z接下來的問題接下來的問題v并發(fā)調(diào)度產(chǎn)生的錯誤有哪些?并發(fā)調(diào)度產(chǎn)生的錯誤有哪些?三類不一致性三類不一致性z我們把并發(fā)調(diào)度破壞數(shù)據(jù)一致性所產(chǎn)生的錯誤,我們把并發(fā)調(diào)度破壞數(shù)據(jù)一致性所產(chǎn)生的錯誤,又稱為數(shù)據(jù)不一致性。分為以下三種:又稱為數(shù)據(jù)不一致性。分為以下三種:v丟失修改丟失修改v不可重復(fù)讀不可重復(fù)讀v讀讀“臟臟”數(shù)據(jù)數(shù)據(jù)第一類:丟失修改第一類:丟失修改z丟失修改的產(chǎn)生丟失修改的產(chǎn)生v并發(fā)調(diào)度兩個事務(wù)并發(fā)調(diào)度兩個事務(wù)T1、T2。vT1與與T2從數(shù)據(jù)庫中讀入同一數(shù)據(jù)后分別修改。假設(shè)從數(shù)據(jù)庫中讀入同一數(shù)據(jù)后分別修改。假設(shè)T1先提交,而先提交,而T2后提交。后提交。v則則T2提交的修改覆蓋了提交的修改
31、覆蓋了T1提交的修改,導(dǎo)致提交的修改,導(dǎo)致T1的修的修改丟失。改丟失。第一類:丟失修改第一類:丟失修改z例子例子v事務(wù)事務(wù)T1: 賣出兩張機(jī)票;事務(wù)賣出兩張機(jī)票;事務(wù)T2:賣出一張機(jī)票:賣出一張機(jī)票事務(wù)事務(wù)T1read(A);A := A 2;write(A);事務(wù)事務(wù)T2read(A);A := A 1;write(A);起始狀態(tài)起始狀態(tài):A=10串行調(diào)度串行調(diào)度T1, T2:A=7; 串行調(diào)度串行調(diào)度T2, T1:A=7第一類:丟失修改第一類:丟失修改v丟失修改的并發(fā)調(diào)度丟失修改的并發(fā)調(diào)度A=8A=9T1和和T2讀入讀入同一數(shù)據(jù)同一數(shù)據(jù)A,T2提交的修提交的修改覆蓋了改覆蓋了T1提交的修改
32、,提交的修改,導(dǎo)致導(dǎo)致T1的修的修改丟失。改丟失。 read(A); A := A 1; write(A); read(A); A := A 2; write(A); T1T2開始開始A=10第二類:不可重復(fù)讀第二類:不可重復(fù)讀z不可重復(fù)讀的產(chǎn)生不可重復(fù)讀的產(chǎn)生v事務(wù)事務(wù)T1讀取某些數(shù)據(jù)(記錄)后,讀取某些數(shù)據(jù)(記錄)后,v事務(wù)事務(wù)T2對這些數(shù)據(jù)(記錄)做了對這些數(shù)據(jù)(記錄)做了某種修改操作某種修改操作v當(dāng)當(dāng)T1再次讀取該數(shù)據(jù)(記錄)時,得到的是與前一次再次讀取該數(shù)據(jù)(記錄)時,得到的是與前一次不同的值不同的值第二類:不可重復(fù)讀第二類:不可重復(fù)讀z不可重復(fù)讀的產(chǎn)生不可重復(fù)讀的產(chǎn)生v事務(wù)事務(wù)T1
33、讀取某些數(shù)據(jù)(記錄)后,讀取某些數(shù)據(jù)(記錄)后,v事務(wù)事務(wù)T2對這些數(shù)據(jù)(記錄)做了對這些數(shù)據(jù)(記錄)做了某種修改操作某種修改操作v當(dāng)當(dāng)T1再次讀取該數(shù)據(jù)(記錄)時,得到的是與前一次再次讀取該數(shù)據(jù)(記錄)時,得到的是與前一次不同的值不同的值第二類:不可重復(fù)讀第二類:不可重復(fù)讀z不可重復(fù)讀又分為三種情況不可重復(fù)讀又分為三種情況在事務(wù)在事務(wù)T1兩次讀取之間,兩次讀取之間,v另一事務(wù)另一事務(wù)T2更新更新了記錄。則當(dāng)了記錄。則當(dāng)T1第二次讀取時,得到第二次讀取時,得到與前一次不同的記錄值與前一次不同的記錄值v另一事務(wù)另一事務(wù)T2刪除刪除了部分記錄。則當(dāng)了部分記錄。則當(dāng)T1第二次讀取時,第二次讀取時,發(fā)
34、現(xiàn)其中的某些記錄神秘地消失了發(fā)現(xiàn)其中的某些記錄神秘地消失了v另一事務(wù)另一事務(wù)T2插入插入了一些記錄。則當(dāng)了一些記錄。則當(dāng)T1第二次按相同條第二次按相同條件讀取時,發(fā)現(xiàn)地神秘地多了一些記錄件讀取時,發(fā)現(xiàn)地神秘地多了一些記錄 (后兩種不可重復(fù)讀有時也稱為(后兩種不可重復(fù)讀有時也稱為幻影幻影現(xiàn)象)現(xiàn)象)第二類:不可重復(fù)讀第二類:不可重復(fù)讀z不可重復(fù)讀的例子不可重復(fù)讀的例子v事務(wù)事務(wù)T1: 讀取并打印存款,重復(fù)兩次;事務(wù)讀取并打印存款,重復(fù)兩次;事務(wù)T2:存款:存款100事務(wù)事務(wù)T2read(A);A = A + 100;write(A);事務(wù)事務(wù)T1read(A);print(A);read(A);
35、print(A);起始狀態(tài)起始狀態(tài):A=0¥串行調(diào)度串行調(diào)度T1、T2:A=100;打印打印100100串行調(diào)度串行調(diào)度T1、T2:A=100;打印打印100100第二類:不可重復(fù)讀第二類:不可重復(fù)讀v不可重復(fù)讀的并發(fā)調(diào)度不可重復(fù)讀的并發(fā)調(diào)度打印打印A? read(A); A := A + 100; write(A); T1T2 read(A); print(A); read(A); print(A);打印打印A ?事務(wù)事務(wù)T1讀取某讀取某一數(shù)據(jù)一數(shù)據(jù)A后,后,事務(wù)事務(wù)T2對其進(jìn)對其進(jìn)行了更新操作,行了更新操作,當(dāng)當(dāng)T1再次讀取再次讀取該數(shù)據(jù)時,得該數(shù)據(jù)時,得到與前次不同到與前次不同的值。的值
36、。第二類:不可重復(fù)讀第二類:不可重復(fù)讀z幻影的例子幻影的例子v事務(wù)事務(wù)T1: 查詢男生人數(shù),重復(fù)兩次;事務(wù)查詢男生人數(shù),重復(fù)兩次;事務(wù)T2:插入一:插入一條男生記錄。條男生記錄。事務(wù)事務(wù)T2Insert into 學(xué)生表學(xué)生表 (學(xué)號學(xué)號, 姓名姓名, 性別性別) Values (S5, 王平王平, 男男)事務(wù)事務(wù)T1Select Count(*)From 學(xué)生表學(xué)生表 Where 性別性別 = 男男Select Count(*) From 學(xué)生表學(xué)生表 Where 性別性別 = 男男串行調(diào)度串行調(diào)度T1、T2:兩次的男生人數(shù)相同兩次的男生人數(shù)相同串行調(diào)度串行調(diào)度T1、T2:兩次的男生人數(shù)相同兩次的男生人數(shù)相同(比左邊多(比左邊多1)第二類:不可重復(fù)讀第二類:不可重復(fù)讀v產(chǎn)生產(chǎn)生“幻影幻影”的并發(fā)調(diào)度的并發(fā)調(diào)度T1T2同一個事務(wù)中,同一個事務(wù)中,(條件)相同(條件)相同的兩次查詢,的兩次查詢,結(jié)果卻不同。結(jié)果卻不同。某些記錄神秘某些記錄神秘地出
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四川蜀能電力產(chǎn)業(yè)發(fā)展有限公司招聘筆試題庫2025
- 浙江安全生產(chǎn)科學(xué)研究有限公司招聘筆試題庫2025
- 教育教學(xué)課程設(shè)計
- 創(chuàng)客教育管理專業(yè)考試試題及答案2025年
- 2025年云計算技術(shù)考試試卷及答案
- 2025年行業(yè)標(biāo)準(zhǔn)與規(guī)范化管理考試試題及答案
- 2025年文化產(chǎn)業(yè)管理與運(yùn)營能力考試試題及答案
- 2025年社會學(xué)基礎(chǔ)知識考試試卷及答案
- 2025年體育專業(yè)生理論知識考試試題及答案
- 2025年非物質(zhì)文化遺產(chǎn)保護(hù)與發(fā)展考試試卷及答案
- 中國真正丹道理法及工程次第闡真
- 2022年四川省成都市中考英語試卷及答案
- 商務(wù)英語寫作實踐智慧樹知到答案章節(jié)測試2023年中北大學(xué)
- 新年春節(jié)廉潔過年過廉潔年端午節(jié)清廉文化中秋節(jié)廉潔過節(jié)優(yōu)秀課件兩篇
- GB/T 10920-2008螺紋量規(guī)和光滑極限量規(guī)型式與尺寸
- 認(rèn)知宇宙飛船之星際探索
- 皮膚病理知識學(xué)習(xí)整理課件整理
- 人工智能課件213產(chǎn)生式表示法
- 空調(diào)維保質(zhì)量保障體系及措施方案
- 建筑樁基技術(shù)規(guī)范2018
- 信息隱藏與數(shù)字水印課件(全)全書教學(xué)教程完整版電子教案最全幻燈片
評論
0/150
提交評論