




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、東華大學 數(shù)學02 數(shù)據(jù)庫系 統(tǒng)原理1 第第4章章 數(shù)據(jù)庫管理數(shù)據(jù)庫管理 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理2 主要內(nèi)容主要內(nèi)容 n4.1 事務(wù)事務(wù) n4.2 數(shù)據(jù)庫的恢復(fù)數(shù)據(jù)庫的恢復(fù) n4.3 數(shù)據(jù)庫的并發(fā)控制數(shù)據(jù)庫的并發(fā)控制 n4.4 數(shù)據(jù)庫的完整性數(shù)據(jù)庫的完整性 n4.5 數(shù)據(jù)庫的安全性數(shù)據(jù)庫的安全性 n4.6 小結(jié)小結(jié) 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理3 4.1 事務(wù)事務(wù) n在在DBS運行時,運行時,DBMS負責對負責對DB進行監(jiān)控,以保證系進行監(jiān)控,以保證系 統(tǒng)正常運行,防止數(shù)據(jù)意外丟失和不一致數(shù)據(jù)的產(chǎn)生。統(tǒng)正常運行,防止數(shù)據(jù)意外丟失和不一致數(shù)據(jù)的產(chǎn)生。 nDBMS對對DB的監(jiān)控,
2、稱為數(shù)據(jù)庫的管理或數(shù)據(jù)庫的保的監(jiān)控,稱為數(shù)據(jù)庫的管理或數(shù)據(jù)庫的保 護。主要有四個方面:護。主要有四個方面:數(shù)據(jù)庫的恢復(fù)、并發(fā)控制、完數(shù)據(jù)庫的恢復(fù)、并發(fā)控制、完 整性控制和安全性控制整性控制和安全性控制。每一方面構(gòu)成了。每一方面構(gòu)成了DBMS的一的一 個子系統(tǒng)。個子系統(tǒng)。 n事務(wù)事務(wù)是是DBS運行的最小邏輯工作單位。所有對數(shù)據(jù)庫運行的最小邏輯工作單位。所有對數(shù)據(jù)庫 的操作,都要以事務(wù)作為一個整體單位來執(zhí)行或撤銷。的操作,都要以事務(wù)作為一個整體單位來執(zhí)行或撤銷。 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理4 4.1.1 事務(wù)的定義事務(wù)的定義(1) 定義定義4.14.1 事務(wù)事務(wù)(transaction)是
3、構(gòu)成單一邏輯工作單元是構(gòu)成單一邏輯工作單元 的操作集合的操作集合。不論發(fā)生任何情況,。不論發(fā)生任何情況,DBS必須保證事必須保證事 務(wù)能正確、完整地執(zhí)行。務(wù)能正確、完整地執(zhí)行。 v一個事務(wù)由應(yīng)用程序中的一組操作序列組成。事務(wù)一個事務(wù)由應(yīng)用程序中的一組操作序列組成。事務(wù) 以以BEGIN TRANSACTION開始,以開始,以COMMIT(提交提交) 或或ROLLBACK(回滾回滾)結(jié)束。結(jié)束。 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理5 4.1.1 事務(wù)的定義事務(wù)的定義(2) vCOMMIT:當事務(wù)所引用的所有數(shù)據(jù)的邏輯都正確:當事務(wù)所引用的所有數(shù)據(jù)的邏輯都正確 時,時,COMMIT使得自從事務(wù)開始以
4、來所執(zhí)行的所有使得自從事務(wù)開始以來所執(zhí)行的所有 數(shù)據(jù)修改成為數(shù)據(jù)庫的永久部分,并釋放連接占用數(shù)據(jù)修改成為數(shù)據(jù)庫的永久部分,并釋放連接占用 的資源。的資源。 v如果所提交的事務(wù)涉及到多個服務(wù)器或一個服務(wù)器如果所提交的事務(wù)涉及到多個服務(wù)器或一個服務(wù)器 上的多個數(shù)據(jù)庫,則使用兩階段提交協(xié)議,以便提上的多個數(shù)據(jù)庫,則使用兩階段提交協(xié)議,以便提 交所有涉及該事務(wù)的服務(wù)器或數(shù)據(jù)庫。交所有涉及該事務(wù)的服務(wù)器或數(shù)據(jù)庫。 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理6 4.1.1 事務(wù)的定義事務(wù)的定義(3) v當在嵌套事務(wù)中使用時,內(nèi)部事務(wù)的提交并不釋放當在嵌套事務(wù)中使用時,內(nèi)部事務(wù)的提交并不釋放 資源或使其修改成為永久
5、修改。只有在提交了外部資源或使其修改成為永久修改。只有在提交了外部 事務(wù)時,數(shù)據(jù)修改才具有永久性,而且資源才會被事務(wù)時,數(shù)據(jù)修改才具有永久性,而且資源才會被 釋放。釋放。 vROLLBACK:將事務(wù)回滾到事務(wù)的起點或事務(wù)內(nèi)的:將事務(wù)回滾到事務(wù)的起點或事務(wù)內(nèi)的 某個保存點。某個保存點。 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理7 4.1.1 例子:事務(wù)及其性質(zhì)例子:事務(wù)及其性質(zhì) v例例4.1 設(shè)銀行數(shù)據(jù)庫中設(shè)銀行數(shù)據(jù)庫中 有一轉(zhuǎn)賬事務(wù)有一轉(zhuǎn)賬事務(wù)T,從賬從賬 號號A轉(zhuǎn)一筆款子轉(zhuǎn)一筆款子($50) 到到賬號賬號B。 q相應(yīng)的事務(wù)相應(yīng)的事務(wù)T: BEGIN TRANSACTION read(A); A:=
6、A50; write(A); if (A0) ROLLBACK; else read(B); B:=B + 50; write(B); COMMIT; 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理8 例例:更新學生更新學生S1的成績,若有空成績,回滾。的成績,若有空成績,回滾。 nselect * from sc where s#=s1 order by c#; nbegin transaction n update sc n set score = score*0.9+10 n where s#=s1 ; n select * from sc where s#=s1 order by c#; n if
7、 (exists(select * from sc where s#=s1 n and score is null) n rollback transaction n else n commit transaction n select * from sc where s#=s1 order by c#; 錯:score = null 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理9 4.1.2 事務(wù)的事務(wù)的ACID性質(zhì)性質(zhì) n原子性原子性(Atomicity):事務(wù)事務(wù)是一個不可分割的工作單元是一個不可分割的工作單元; n一致性一致性(Consistency) :數(shù)據(jù)不會因事務(wù)的執(zhí)行而遭數(shù)據(jù)不會因事務(wù)的
8、執(zhí)行而遭 受破壞;受破壞; n隔離性隔離性(Isolation):在多個事務(wù)并發(fā)執(zhí)行時,系統(tǒng)應(yīng)保在多個事務(wù)并發(fā)執(zhí)行時,系統(tǒng)應(yīng)保 證與這些事務(wù)先后單獨執(zhí)行時的結(jié)果一樣;證與這些事務(wù)先后單獨執(zhí)行時的結(jié)果一樣; n持久性持久性(Durability):一個事務(wù)一旦完成全部操作后,一個事務(wù)一旦完成全部操作后, 它對數(shù)據(jù)庫的所有更新應(yīng)永久地反映在數(shù)據(jù)庫中;它對數(shù)據(jù)庫的所有更新應(yīng)永久地反映在數(shù)據(jù)庫中; 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理10 4.1.2 事務(wù)提交和事務(wù)撤銷事務(wù)提交和事務(wù)撤銷 n事務(wù)的所有操作都完成了,則事務(wù)提交事務(wù)的所有操作都完成了,則事務(wù)提交(COMMIT), 否則事務(wù)撤銷否則事務(wù)撤銷(
9、ROLLBACK) nBEGIN TRANSACTION標志事務(wù)開始執(zhí)行標志事務(wù)開始執(zhí)行 nBEGIN TRANSACTION和和COMMIT或或ROLLBACK 一起保證了事務(wù)的四個性質(zhì)一起保證了事務(wù)的四個性質(zhì) n對數(shù)據(jù)庫訪問的兩個基本操作:讀和寫,但完成寫對數(shù)據(jù)庫訪問的兩個基本操作:讀和寫,但完成寫 操作后,數(shù)據(jù)可能暫時放在內(nèi)存中,而非直接寫進操作后,數(shù)據(jù)可能暫時放在內(nèi)存中,而非直接寫進 數(shù)據(jù)庫。數(shù)據(jù)庫。 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理11 4.2 數(shù)據(jù)庫的恢復(fù)數(shù)據(jù)庫的恢復(fù) nDBMS的恢復(fù)管理子系統(tǒng)采取一系列措施保證的恢復(fù)管理子系統(tǒng)采取一系列措施保證 在任何情況下保持事務(wù)的原子性和持
10、久性,確在任何情況下保持事務(wù)的原子性和持久性,確 保數(shù)據(jù)不丟失、不破壞。保數(shù)據(jù)不丟失、不破壞。 n定義定義4.2 系統(tǒng)能把數(shù)據(jù)庫從被破壞、不正確的系統(tǒng)能把數(shù)據(jù)庫從被破壞、不正確的 狀態(tài)恢復(fù)到最近一個正確的狀態(tài),狀態(tài)恢復(fù)到最近一個正確的狀態(tài),DBMS的這的這 種能力稱為種能力稱為數(shù)據(jù)庫的可恢復(fù)性數(shù)據(jù)庫的可恢復(fù)性(Recovery)。 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理12 4.2 恢復(fù)和原子性的聯(lián)系恢復(fù)和原子性的聯(lián)系 銀行轉(zhuǎn)賬系統(tǒng)銀行轉(zhuǎn)賬系統(tǒng) A=2000 B=1000 事務(wù)事務(wù) A=A-100 B=B+100 output(A) Output(B) 斷電或其斷電或其 他故障他故障 若沒有事務(wù)若
11、沒有事務(wù) 的原子性,的原子性, 那么重新啟那么重新啟 動事務(wù)時要動事務(wù)時要 么么A因為再執(zhí)因為再執(zhí) 行一遍而為行一遍而為 1800,要么,要么 B因從未執(zhí)行因從未執(zhí)行 而保持原值而保持原值 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理13 4.2.1 典型的恢復(fù)策略典型的恢復(fù)策略(1) n基本原則:基本原則:“冗余冗余”,即數(shù)據(jù)庫重復(fù)存儲,即數(shù)據(jù)庫重復(fù)存儲 n典型的恢復(fù)策略:典型的恢復(fù)策略: (1)平時做好兩件事:轉(zhuǎn)儲和建立日志平時做好兩件事:轉(zhuǎn)儲和建立日志 n周期地周期地( (比如一天一次比如一天一次) )對整個數(shù)據(jù)庫進行拷貝對整個數(shù)據(jù)庫進行拷貝, 轉(zhuǎn)儲到另一個磁盤或磁帶一類存儲介質(zhì)中。轉(zhuǎn)儲到另一個磁
12、盤或磁帶一類存儲介質(zhì)中。 n建立日志數(shù)據(jù)庫建立日志數(shù)據(jù)庫。記錄事務(wù)的開始、結(jié)束及數(shù)。記錄事務(wù)的開始、結(jié)束及數(shù) 據(jù)每一次插入、刪除和修改前后的值,并寫到據(jù)每一次插入、刪除和修改前后的值,并寫到 “日志日志”庫中,以便有案可查。庫中,以便有案可查。 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理14 4.2.1 典型的恢復(fù)典型的恢復(fù)策略策略(2) (2) 一旦發(fā)生數(shù)據(jù)庫故障,分兩種情況進行處理:一旦發(fā)生數(shù)據(jù)庫故障,分兩種情況進行處理: n如果數(shù)據(jù)庫遇到災(zāi)難性故障,如果數(shù)據(jù)庫遇到災(zāi)難性故障,遭到物理性破壞遭到物理性破壞,則裝,則裝 入最近一次數(shù)據(jù)庫備份,再利用日志庫入最近一次數(shù)據(jù)庫備份,再利用日志庫重做重做(R
13、EDO) 已提交的事務(wù),把數(shù)據(jù)庫恢復(fù)到故障前的狀態(tài)。已提交的事務(wù),把數(shù)據(jù)庫恢復(fù)到故障前的狀態(tài)。 n如果數(shù)據(jù)庫如果數(shù)據(jù)庫未遭到物理性破壞未遭到物理性破壞,但破壞了數(shù)據(jù)庫的一,但破壞了數(shù)據(jù)庫的一 致性致性( (某些數(shù)據(jù)已不正確某些數(shù)據(jù)已不正確) ),則利用日志庫,則利用日志庫撤消撤消 (UNDO)所有不可靠的修改,再利用日志庫所有不可靠的修改,再利用日志庫重做重做 (REDO)已提交的、但對數(shù)據(jù)庫的更新尚留在內(nèi)存緩已提交的、但對數(shù)據(jù)庫的更新尚留在內(nèi)存緩 沖區(qū)的事務(wù),把數(shù)據(jù)庫恢復(fù)到正確的狀態(tài)。沖區(qū)的事務(wù),把數(shù)據(jù)庫恢復(fù)到正確的狀態(tài)。 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理15 4.2.2 故障類型和恢復(fù)方
14、法故障類型和恢復(fù)方法(1) n事務(wù)故障事務(wù)故障 n可以預(yù)期的事務(wù)故障:如存款余額透支等,可以預(yù)期的事務(wù)故障:如存款余額透支等, 在程序中進行判斷和處理,當事務(wù)執(zhí)行到在程序中進行判斷和處理,當事務(wù)執(zhí)行到 ROLLBACK時,系統(tǒng)對事務(wù)執(zhí)行時,系統(tǒng)對事務(wù)執(zhí)行UNDO; n非預(yù)期事務(wù)故障:如運算溢出、數(shù)據(jù)錯誤、非預(yù)期事務(wù)故障:如運算溢出、數(shù)據(jù)錯誤、 死鎖等,由系統(tǒng)直接執(zhí)行死鎖等,由系統(tǒng)直接執(zhí)行UNDO; 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理16 4.2.2 故障類型和恢復(fù)方法故障類型和恢復(fù)方法(2) n系統(tǒng)故障系統(tǒng)故障( (軟故障軟故障) ) n使系統(tǒng)停止運行并要求重啟的故障,如硬件故障、使系統(tǒng)停止運
15、行并要求重啟的故障,如硬件故障、 軟件錯誤或掉電等等。系統(tǒng)故障使所有正在運行軟件錯誤或掉電等等。系統(tǒng)故障使所有正在運行 的事務(wù)非正常終止,破壞了數(shù)據(jù)的完整性或一致的事務(wù)非正常終止,破壞了數(shù)據(jù)的完整性或一致 性,但不會造成數(shù)據(jù)庫的物理性破壞。性,但不會造成數(shù)據(jù)庫的物理性破壞。 n重啟時,恢復(fù)數(shù)據(jù)庫:重啟時,恢復(fù)數(shù)據(jù)庫: 對未完成的事務(wù)進行對未完成的事務(wù)進行UNDO處理;處理; 對已提交但更新仍留在緩沖區(qū)的事務(wù)進行對已提交但更新仍留在緩沖區(qū)的事務(wù)進行REDO處理。處理。 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理17 4.2.2 故障類型和恢復(fù)方法故障類型和恢復(fù)方法(3) n介質(zhì)故障介質(zhì)故障( (硬故障硬
16、故障) ) 磁盤物理故障或遭受病毒破壞,使硬盤上的物理磁盤物理故障或遭受病毒破壞,使硬盤上的物理 數(shù)據(jù)庫遭到毀滅性破壞。此時,恢復(fù)過程如下:數(shù)據(jù)庫遭到毀滅性破壞。此時,恢復(fù)過程如下: (1)重裝轉(zhuǎn)儲的后備副本到新的磁盤,使數(shù)據(jù)庫恢復(fù)重裝轉(zhuǎn)儲的后備副本到新的磁盤,使數(shù)據(jù)庫恢復(fù) 到轉(zhuǎn)儲時的一致狀態(tài)。到轉(zhuǎn)儲時的一致狀態(tài)。 (2)在日志中找出轉(zhuǎn)儲以后所有已提交的事務(wù)。在日志中找出轉(zhuǎn)儲以后所有已提交的事務(wù)。 (3)對這些已提交的事務(wù)進行對這些已提交的事務(wù)進行REDO處理,將數(shù)據(jù)庫處理,將數(shù)據(jù)庫 恢復(fù)到故障前某一時刻的一致狀態(tài)?;謴?fù)到故障前某一時刻的一致狀態(tài)。 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理18 4.
17、2.2 故障類型和恢復(fù)方法故障類型和恢復(fù)方法(4) n事務(wù)故障和系統(tǒng)故障的恢復(fù)由系統(tǒng)自動進行,事務(wù)故障和系統(tǒng)故障的恢復(fù)由系統(tǒng)自動進行, 而介質(zhì)故障的恢復(fù)需要而介質(zhì)故障的恢復(fù)需要DBA配合執(zhí)行。配合執(zhí)行。 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理19 4.2.3 檢查點方法檢查點方法(1) n什么是什么是檢查點方法檢查點方法 在在DBS運行時,運行時,DBMS定時設(shè)置檢查點,在檢查定時設(shè)置檢查點,在檢查 點時刻把對點時刻把對DB的修改真正寫入磁盤,并在日志的修改真正寫入磁盤,并在日志 文件中寫入一條檢查點記錄文件中寫入一條檢查點記錄(該過程無需人工干該過程無需人工干 預(yù)預(yù))。當。當DB恢復(fù)時,只需恢復(fù)
18、檢查點后面的事務(wù)?;謴?fù)時,只需恢復(fù)檢查點后面的事務(wù)。 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理20 4.2.3 檢查點方法檢查點方法(2) - T1 T2 T3 T4 T5 事務(wù)事務(wù)檢查點檢查點t2故障點故障點 時間時間t 檢查點檢查點t1 數(shù)據(jù)庫恢復(fù)時:事務(wù)數(shù)據(jù)庫恢復(fù)時:事務(wù)T1T1不必恢復(fù)不必恢復(fù); ; 事務(wù)事務(wù)T2T2和事務(wù)和事務(wù)T4T4必須重做必須重做(REDO);(REDO); 事務(wù)事務(wù)T3T3和事務(wù)和事務(wù)T5T5必須撤消必須撤消(UNDO);(UNDO); 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理21 4.2.3 檢查點方法檢查點方法(3) n檢查點方法的恢復(fù)算法檢查點方法的恢復(fù)算法 (1)根
19、據(jù)日志文件建立事務(wù)重做隊列和事務(wù)撤銷隊列根據(jù)日志文件建立事務(wù)重做隊列和事務(wù)撤銷隊列; 方法:正向掃描日志文件,將最近一次檢查點之后方法:正向掃描日志文件,將最近一次檢查點之后 故障發(fā)生之前已經(jīng)提交的事務(wù),列入故障發(fā)生之前已經(jīng)提交的事務(wù),列入REDO隊列;隊列; 將故障發(fā)生之前尚未提交的事務(wù),列入將故障發(fā)生之前尚未提交的事務(wù),列入UNDO隊隊 列;列; 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理22 4.2.3 檢查點方法檢查點方法(4) (2)對重做隊列中的事務(wù)進行對重做隊列中的事務(wù)進行REDO處理,對撤消隊處理,對撤消隊 列中的事務(wù)進行列中的事務(wù)進行UNDO處理處理; 方法:正向掃描日志文件,對方法
20、:正向掃描日志文件,對REDO隊列中的每個隊列中的每個 事務(wù)重新執(zhí)行對數(shù)據(jù)庫的更新;反向掃描日志文事務(wù)重新執(zhí)行對數(shù)據(jù)庫的更新;反向掃描日志文 件,對件,對UNDO隊列中的每個事務(wù)執(zhí)行逆操作。隊列中的每個事務(wù)執(zhí)行逆操作。 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理23 4.2.4 SQL對事務(wù)的支持對事務(wù)的支持 nSQL支持支持Commit和和Rollback來提交或回滾事務(wù);來提交或回滾事務(wù); 執(zhí)行執(zhí)行rollback時,強制關(guān)閉所有游標。而執(zhí)行時,強制關(guān)閉所有游標。而執(zhí)行 commit時游標是否關(guān)閉,可以通過時游標是否關(guān)閉,可以通過SET CURSOR_ CLOSE_ON_COMMITON|OFF控
21、制。控制。 n由由begin transaction定義顯式事務(wù),它可以顯式地定義顯式事務(wù),它可以顯式地 在其中定義事務(wù)的啟動和結(jié)束。在其中定義事務(wù)的啟動和結(jié)束。 n若無若無begin transaction,則隱含著程序開始,則事,則隱含著程序開始,則事 務(wù)開始;遇到務(wù)開始;遇到commit/rollback或程序結(jié)束,則事或程序結(jié)束,則事 務(wù)結(jié)束。務(wù)結(jié)束。 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理24 4.3 數(shù)據(jù)庫的并發(fā)控制數(shù)據(jù)庫的并發(fā)控制 n4.3.1 并發(fā)操作帶來的并發(fā)操作帶來的4個問題個問題 n4.3.2 封鎖技術(shù)封鎖技術(shù) n4.3.3 封鎖帶來的問題封鎖帶來的問題 n4.3.4 并發(fā)操
22、作的調(diào)度并發(fā)操作的調(diào)度 n4.3.5 SQL對并發(fā)處理的支持對并發(fā)處理的支持 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理25 4.3.1 并發(fā)操作帶來的問題并發(fā)操作帶來的問題 n1、丟失更新問題丟失更新問題:當兩個或多個事務(wù)選擇同一行,:當兩個或多個事務(wù)選擇同一行, 然后基于最初選定的值更新該行時,會發(fā)生丟失更然后基于最初選定的值更新該行時,會發(fā)生丟失更 新問題。每個事務(wù)都不知道其它事務(wù)的存在。最后新問題。每個事務(wù)都不知道其它事務(wù)的存在。最后 的更新將重寫由其它事務(wù)所做的更新,這將導(dǎo)致數(shù)的更新將重寫由其它事務(wù)所做的更新,這將導(dǎo)致數(shù) 據(jù)丟失。據(jù)丟失。 n2、讀臟數(shù)據(jù)問題讀臟數(shù)據(jù)問題:當?shù)诙€事務(wù)選擇其它
23、事務(wù)正:當?shù)诙€事務(wù)選擇其它事務(wù)正 在更新的行時,第二個事務(wù)正在讀取的數(shù)據(jù)還沒有在更新的行時,第二個事務(wù)正在讀取的數(shù)據(jù)還沒有 確認并且可能被其它事務(wù)所更改或回滾已做的修改。確認并且可能被其它事務(wù)所更改或回滾已做的修改。 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理26 4.3.1 并發(fā)操作帶來的問題并發(fā)操作帶來的問題 n3、錯誤求和問題錯誤求和問題: n4、不可重復(fù)讀問題不可重復(fù)讀問題:當?shù)诙€事務(wù)多次訪問同一行當?shù)诙€事務(wù)多次訪問同一行, , 而且,每次讀取的數(shù)據(jù)都是由已更改了該數(shù)據(jù)的事而且,每次讀取的數(shù)據(jù)都是由已更改了該數(shù)據(jù)的事 務(wù)提交的,造成多次讀取的數(shù)據(jù)不一致。務(wù)提交的,造成多次讀取的數(shù)據(jù)不一致
24、。 n5、幻像讀問題幻像讀問題:當對某行執(zhí)行插入或刪除操作,而:當對某行執(zhí)行插入或刪除操作,而 該行屬于某個事務(wù)正在讀取的行的范圍時,會發(fā)生該行屬于某個事務(wù)正在讀取的行的范圍時,會發(fā)生 幻像讀問題。幻像讀問題。 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理27 4.3.1 問題問題1-丟失更新丟失更新 時間時間更新事務(wù)更新事務(wù)T1數(shù)據(jù)庫中數(shù)據(jù)庫中A的值的值更新事務(wù)更新事務(wù)T2 t0100 t1FIND A t2FIND A t3A:=A-30 t4A:=A*2 t5UPD A t670UPD A t7200 表表4.1 在時間在時間t7丟失了事務(wù)丟失了事務(wù)T1的更新的更新 串行執(zhí)行結(jié)果:應(yīng)該為串行執(zhí)行結(jié)
25、果:應(yīng)該為140(T1先先T2后后)或或170 (T2先先T1后后) 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理28 4.3.1 問題問題2-讀臟數(shù)據(jù)讀臟數(shù)據(jù)(1) 時間時間更新事務(wù)更新事務(wù)T1數(shù)據(jù)庫中數(shù)據(jù)庫中A的值的值讀事務(wù)讀事務(wù)T2 t0100 t1FIND A t2A:=A-30 t3UPD A t470FIND A t5*ROLLBACK* t6100 表表4.2 事務(wù)事務(wù)T2在時間在時間t4讀了未提交的讀了未提交的A值值(70) 臟數(shù)據(jù):未提交的隨后被撤銷的數(shù)據(jù)。臟數(shù)據(jù):未提交的隨后被撤銷的數(shù)據(jù)。T2只是讀了只是讀了 臟數(shù)據(jù),而未破壞數(shù)據(jù)庫的完整性。臟數(shù)據(jù),而未破壞數(shù)據(jù)庫的完整性。 東華大學
26、 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理29 4.3.1 問題問題2-讀臟數(shù)據(jù)讀臟數(shù)據(jù)(2) 時間時間更新事務(wù)更新事務(wù)T1數(shù)據(jù)庫中數(shù)據(jù)庫中A的值的值 讀事務(wù)讀事務(wù)T2 t0100 t1FIND A t2A:=A-30 t3UPD A t470FIND A t5A:=A*2 t6140UPD A t7 t8*ROLLBACK* t9100 表表4.3 事務(wù)事務(wù)T2 在時間在時間 t 4 讀 了讀 了 未提交未提交 的的A值,值, 并在時并在時 間間 t 8 丟丟 失了自失了自 己的更己的更 新新 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理30 4.3.1 問題問題3-錯誤求和錯誤求和 時間時間讀事務(wù)讀事務(wù)T1數(shù)據(jù)庫中
27、數(shù)據(jù)庫中A、B、C的值的值更新事務(wù)更新事務(wù)T2 t040,50,30 t1FIND A t2SUM:=A t3FIND B t4SUM:=SUM+B t5FIND C t6C:=C-10 t7UPD C t840,50,20FIND A t9A:=A+10 t10UPD A t1150,50,20COMMIT t12FIND C t13SUM:=SUM+C 表表 4.44.4 事事 務(wù)務(wù) T1T1 進進 行行 了了 不不 一一 致致 的的 分分 析析 40+50+20 40+50+30 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理31 4.3.1 問題問題4-不可重復(fù)讀不可重復(fù)讀 時間時間讀事務(wù)讀事務(wù)T
28、1數(shù)據(jù)庫中數(shù)據(jù)庫中A的值的值更新事務(wù)更新事務(wù)T2 t0 100 t1 FIND A t2 XFIND A t3 A:=A*2 t4 UPD A t5 200COMMIT t6 FIND A 表表4.5 事務(wù)事務(wù)T1兩次讀取兩次讀取A的值,卻得到了不同的結(jié)果的值,卻得到了不同的結(jié)果 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理32 4.3.2 封鎖技術(shù)封鎖技術(shù) 定義定義4.3 鎖鎖(lock)是一個與數(shù)據(jù)項相關(guān)的變量,對是一個與數(shù)據(jù)項相關(guān)的變量,對 可能應(yīng)用于該數(shù)據(jù)項上的操作而言,鎖描述了該可能應(yīng)用于該數(shù)據(jù)項上的操作而言,鎖描述了該 數(shù)據(jù)項的狀態(tài)。數(shù)據(jù)項的狀態(tài)。 n封鎖技術(shù)封鎖技術(shù) 1、排他型封鎖、排他型
29、封鎖(X鎖鎖) 2、共享型封鎖、共享型封鎖(S鎖鎖) 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理33 4.3.2 封鎖技術(shù)封鎖技術(shù) X鎖 1、排他型封鎖排他型封鎖(X鎖、寫鎖鎖、寫鎖) n定義定義4.4 如果事務(wù)如果事務(wù)T對某個數(shù)據(jù)對某個數(shù)據(jù)R(可以是數(shù)據(jù)項、可以是數(shù)據(jù)項、 記錄、數(shù)據(jù)集或整個數(shù)據(jù)庫記錄、數(shù)據(jù)集或整個數(shù)據(jù)庫)實現(xiàn)了實現(xiàn)了X鎖,那么在鎖,那么在 T對數(shù)據(jù)對數(shù)據(jù)R解除鎖之前,不允許其它事務(wù)對該數(shù)據(jù)解除鎖之前,不允許其它事務(wù)對該數(shù)據(jù) 添加添加任何類型的鎖任何類型的鎖,這種鎖稱為,這種鎖稱為“X鎖鎖”。 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理34 4.3.2 封鎖技術(shù)封鎖技術(shù) X鎖 n使用使用X鎖
30、的操作有兩個:鎖的操作有兩個: (1) 申請申請X鎖操作鎖操作“XFIND R”: 對數(shù)據(jù)對數(shù)據(jù)R申請申請X鎖,鎖, 若申請成功,則可以讀寫數(shù)據(jù)若申請成功,則可以讀寫數(shù)據(jù)R;若申請不成功,;若申請不成功, 則進入等待隊列,一直到獲準則進入等待隊列,一直到獲準X鎖,事務(wù)才能繼鎖,事務(wù)才能繼 續(xù)。續(xù)。 (2) 解除解除X鎖操作鎖操作“XRELEASE R”: 解除對數(shù)據(jù)解除對數(shù)據(jù)R 的的X鎖。鎖。 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理35 4.3.2 封鎖技術(shù)封鎖技術(shù) X鎖 nPX協(xié)議協(xié)議: 任何企圖更新記錄任何企圖更新記錄R的事務(wù)必須先執(zhí)行的事務(wù)必須先執(zhí)行“XFIND R” 操作,以獲得對操作,以
31、獲得對R的的X鎖,才能讀或?qū)懹涗涙i,才能讀或?qū)懹涗汻;如果;如果 未獲準未獲準X鎖,那么這個事務(wù)進入等待隊列,一直到獲鎖,那么這個事務(wù)進入等待隊列,一直到獲 準準X鎖,事務(wù)才能繼續(xù)做下去。鎖,事務(wù)才能繼續(xù)做下去。 nPXC協(xié)議協(xié)議 X鎖的解除操作應(yīng)該合并到事務(wù)的結(jié)束鎖的解除操作應(yīng)該合并到事務(wù)的結(jié)束(COMMIT或或 ROLLBACK)操作中,在操作中,在COMMIT和和ROLLBACK中中 隱含了釋放隱含了釋放X鎖的操作。鎖的操作。 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理36 例例4.7:使用:使用X鎖封鎖解決數(shù)據(jù)丟失鎖封鎖解決數(shù)據(jù)丟失(表表4.1表表4.6) 時間時間更新事務(wù)更新事務(wù)T1數(shù)據(jù)庫中
32、數(shù)據(jù)庫中A的值的值更新事務(wù)更新事務(wù)T2 t0100 t1XFIND A t2XFIND A(失敗失敗) wait(等待等待) t3A:=A-30wait t4wait t5UPD Await t670wait t7COMMIT(解鎖解鎖)wait t8XFIND A t9A:=A*2 t10UPD A t11140COMMIT(解鎖解鎖) 表表 4.6 等等 T1 更更 新新 完完 成成 后后 再再 執(zhí)執(zhí) 行行 T2 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理37 4.3.2 封鎖技術(shù)封鎖技術(shù) S鎖 2、共享型封鎖共享型封鎖(S鎖、讀鎖鎖、讀鎖)可以并發(fā)的讀可以并發(fā)的讀 定義定義4.5 如果事務(wù)如果事
33、務(wù)T對某數(shù)據(jù)加上對某數(shù)據(jù)加上S鎖后,仍允許其鎖后,仍允許其 它事務(wù)再對該數(shù)據(jù)加它事務(wù)再對該數(shù)據(jù)加S鎖,但在對該數(shù)據(jù)的所有鎖,但在對該數(shù)據(jù)的所有S鎖鎖 都解除之前不允許任何事務(wù)對該數(shù)據(jù)加都解除之前不允許任何事務(wù)對該數(shù)據(jù)加X鎖。鎖。 n使用使用S鎖的操作有三個:鎖的操作有三個: (1)申請申請S鎖操作鎖操作“SFIND R”:對數(shù)據(jù):對數(shù)據(jù)R申請申請S鎖,若鎖,若 成功,則可以讀成功,則可以讀R但不可以寫但不可以寫R;若不成功,則進;若不成功,則進 入等待隊列,一直到獲準入等待隊列,一直到獲準S鎖,事務(wù)才能繼續(xù);鎖,事務(wù)才能繼續(xù); 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理38 4.3.2 封鎖技術(shù)封鎖技
34、術(shù) S鎖 (2) 升級和寫操作升級和寫操作“UPDX R”: 對數(shù)據(jù)對數(shù)據(jù)R的的S鎖升級為鎖升級為 X鎖,若成功,則可寫鎖,若成功,則可寫R;否則進入等待隊列;否則進入等待隊列; (3) 解除解除S鎖操作鎖操作“SRELEASE R”: 釋放對數(shù)據(jù)釋放對數(shù)據(jù)R的的S 鎖;鎖; nPS協(xié)議協(xié)議 獲準獲準S鎖的事務(wù)只能讀數(shù)據(jù),若要寫數(shù)據(jù)必須用鎖的事務(wù)只能讀數(shù)據(jù),若要寫數(shù)據(jù)必須用 “UPDX R”操作把操作把S鎖升級為鎖升級為X鎖。鎖。 nPSC協(xié)議協(xié)議 由于由于S鎖只允許讀數(shù)據(jù),所以鎖只允許讀數(shù)據(jù),所以S鎖的解除不必非要合鎖的解除不必非要合 并到事務(wù)的結(jié)束,可以隨時根據(jù)需要解除并到事務(wù)的結(jié)束,可以
35、隨時根據(jù)需要解除S鎖。鎖。 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理39 例例4.8:使用:使用S鎖封鎖解決數(shù)據(jù)丟失鎖封鎖解決數(shù)據(jù)丟失(表表4.1表表4.7) 時間時間更新事務(wù)更新事務(wù)T1數(shù)據(jù)庫中數(shù)據(jù)庫中A的值的值更新事務(wù)更新事務(wù)T2 t0100 t1SFIND A t2SFIND A t3A:=A-30 t4A:=A*2 t5UPDX A(失敗失敗) t6waitUPDX A(失敗失敗) t7waitwait t8waitwait 表表4.7 更新未丟失,但在時間更新未丟失,但在時間t7發(fā)生了死鎖發(fā)生了死鎖 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理40 例:利用鎖技術(shù)解決讀臟數(shù)據(jù)問題例:利用鎖技術(shù)解決讀
36、臟數(shù)據(jù)問題(表表4.2) 時間時間更新事務(wù)更新事務(wù)T1數(shù)據(jù)庫中數(shù)據(jù)庫中A的值的值讀事務(wù)讀事務(wù)T2 t0100 t1SFIND A t2A:=A-30 t3UPDX A t470SFIND A(失敗失敗) t5*ROLLBACK* (釋放鎖釋放鎖) wait t6100 SFIND A 表表4.2 事務(wù)事務(wù)T2在時間在時間t4讀了未提交的讀了未提交的A值值(70) 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理41 例:利用鎖技術(shù)解決讀臟數(shù)據(jù)問題例:利用鎖技術(shù)解決讀臟數(shù)據(jù)問題(表表4.3) 時間時間更新事務(wù)更新事務(wù)T1數(shù)據(jù)庫中數(shù)據(jù)庫中A的值的值讀事務(wù)讀事務(wù)T2 t0100 t1SFIND A t2A:=A-
37、30 t3UPDX A t470SFIND A(失敗失敗) t5wait t6140wait t7wait t8ROLLBACK(釋放鎖釋放鎖)wait t9100SFIND A A:=A*2 t10UPDX A 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理42 例:利用鎖技術(shù)解決錯誤求和問題例:利用鎖技術(shù)解決錯誤求和問題(表表4.4) 時間時間讀事務(wù)讀事務(wù)T1數(shù)據(jù)庫中數(shù)據(jù)庫中A、B、C的值的值更新事務(wù)更新事務(wù)T2 t040,50,30 t1SFIND A t2SUM:=A t3SFIND B t4SUM:=SUM+B t5SRELEASE A t6SFIND C t7C:=C-10 t8UPDX C
38、t940,50,20SFIND A t10A:=A+10 t11UPDX A t1250,50,20COMMIT t13SFIND C t14SUM:=SUM+C 表表 4.44.4 事事 務(wù)務(wù) T1T1 進進 行行 了了 不不 一一 致致 的的 分分 析析 除非同時申請除非同時申請A,B,C的鎖,否則的鎖,否則 無法避免錯誤求和問題。無法避免錯誤求和問題。 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理43 4.3.2 封鎖技術(shù)封鎖的相容矩陣封鎖技術(shù)封鎖的相容矩陣 X S X S N N Y N Y Y Y Y Y T2 T1 表表4.8 封鎖類型的相容矩陣封鎖類型的相容矩陣 注:注: N=NO,不相容
39、的請求不相容的請求 Y=YES,相容的請求相容的請求; X,S,:分別表示:分別表示X鎖鎖,S鎖鎖,無鎖無鎖; 如果兩個封鎖是不相容的,則后如果兩個封鎖是不相容的,則后 提出封鎖的事務(wù)要等待。提出封鎖的事務(wù)要等待。 只能對同一數(shù)據(jù)同時加多個只能對同一數(shù)據(jù)同時加多個S鎖;鎖; 而而S鎖與鎖與X鎖、鎖、X鎖與鎖與X鎖都不能鎖都不能 同時加在同一數(shù)據(jù)上;同時加在同一數(shù)據(jù)上; 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理44 4.3.2 封鎖技術(shù)封鎖的粒度封鎖技術(shù)封鎖的粒度 n封鎖對象的大小稱為封鎖對象的大小稱為封鎖的粒度封鎖的粒度(granularity) n封鎖的對象封鎖的對象 n物理單元物理單元:頁頁(數(shù)
40、據(jù)頁或索引頁數(shù)據(jù)頁或索引頁)、塊、塊 n邏輯單元邏輯單元:屬性值、屬性值集合、元組、關(guān)系、屬性值、屬性值集合、元組、關(guān)系、 索引項、整個索引、整個數(shù)據(jù)庫索引項、整個索引、整個數(shù)據(jù)庫 n封鎖的粒度越小,系統(tǒng)并發(fā)度越高,系統(tǒng)開銷越大;封鎖的粒度越小,系統(tǒng)并發(fā)度越高,系統(tǒng)開銷越大; 封鎖的粒度越大,系統(tǒng)并發(fā)度越低,系統(tǒng)開銷越??;封鎖的粒度越大,系統(tǒng)并發(fā)度越低,系統(tǒng)開銷越??; 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理45 4.3.2 封鎖技術(shù)封鎖的粒度封鎖技術(shù)封鎖的粒度 nbegin transaction nupdate s set age=19 where s#=s1 n-只對表只對表S的的s#=s1條
41、記錄加了條記錄加了X鎖鎖 n-其它事務(wù)可以訪問表其它事務(wù)可以訪問表S中的其它記錄中的其它記錄 n-如:如:select * from s where s#=s2 n- update s set age=22 where s#=s3 nselect s#,sname from s where s#=s3 n-只對表只對表S的字段的字段S#,SNAME加了加了S鎖鎖(減小封鎖粒度,提減小封鎖粒度,提 高并發(fā)度高并發(fā)度),此時任何其它事務(wù)都不能修改該數(shù)據(jù)。一旦,此時任何其它事務(wù)都不能修改該數(shù)據(jù)。一旦 讀取數(shù)據(jù)結(jié)束,便立即釋放資源上的讀取數(shù)據(jù)結(jié)束,便立即釋放資源上的S鎖。鎖。 東華大學 數(shù)學02 數(shù)據(jù)
42、庫系統(tǒng)原理46 4.3.3 封鎖帶來的問題封鎖帶來的問題1-活鎖活鎖 T1 XFIND A T2 XFIND A T3 XFIND A A A已被封鎖,已被封鎖, 不成功,等待不成功,等待 A剛被釋剛被釋 放,成功放,成功 時間點 A剛被剛被T2釋釋 放,成功放,成功 T1永遠等待永遠等待 活鎖!活鎖! 解決方法:先來先服務(wù)解決方法:先來先服務(wù) 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理47 4.3.3 封鎖帶來的問題封鎖帶來的問題2-餓死餓死 事務(wù)序列 A1 A2 A3 A4 A5 資源A T2 T2永遠不 能封鎖 解決方法,改變授權(quán)方式:解決方法,改變授權(quán)方式: 當事務(wù)當事務(wù)T2中請對數(shù)據(jù)項中請對
43、數(shù)據(jù)項Q加加S鎖時,授權(quán)加鎖的條件是:鎖時,授權(quán)加鎖的條件是: 不存在在數(shù)據(jù)項不存在在數(shù)據(jù)項Q上持有上持有X鎖的其他事務(wù);鎖的其他事務(wù); 不存在等待對數(shù)據(jù)項不存在等待對數(shù)據(jù)項Q加鎖且先于加鎖且先于T2申請加鎖的事務(wù)申請加鎖的事務(wù) 每一個事務(wù)均請每一個事務(wù)均請 求求A的的S鎖,成功鎖,成功 后一段時間釋放后一段時間釋放 請求請求A 的的X鎖鎖 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理48 4.3.3 封鎖帶來的問題封鎖帶來的問題3-死鎖死鎖 表表4.9在時間在時間t4兩個事務(wù)發(fā)生死鎖兩個事務(wù)發(fā)生死鎖 (1)死鎖的定義:死鎖的定義: 定義定義4.9 系統(tǒng)中有兩個或系統(tǒng)中有兩個或 兩個以上的事務(wù)都處于等兩
44、個以上的事務(wù)都處于等 待狀態(tài),并且每個事務(wù)都待狀態(tài),并且每個事務(wù)都 在等待其中另一個事務(wù)解在等待其中另一個事務(wù)解 除封鎖,它才能繼續(xù)執(zhí)行除封鎖,它才能繼續(xù)執(zhí)行 下去,結(jié)果造成任何一個下去,結(jié)果造成任何一個 事務(wù)都無法繼續(xù)執(zhí)行,這事務(wù)都無法繼續(xù)執(zhí)行,這 種現(xiàn)象稱系統(tǒng)進入了種現(xiàn)象稱系統(tǒng)進入了“死死 鎖鎖”狀態(tài)。狀態(tài)。 時間時間事務(wù)事務(wù)T1事務(wù)事務(wù)T2 t0XFIND A t1XFIND B t2XFIND B t3waitXFIND A t4waitwait 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理49 4.3.3 封鎖帶來的問題封鎖帶來的問題3-死鎖死鎖 (2)死鎖的預(yù)防死鎖的預(yù)防 方法一:要求每個事
45、務(wù)在開始執(zhí)行時封鎖它所使用的方法一:要求每個事務(wù)在開始執(zhí)行時封鎖它所使用的 所有數(shù)據(jù);要么一次全部封鎖,要么全不封鎖;所有數(shù)據(jù);要么一次全部封鎖,要么全不封鎖; 例:某事務(wù)例:某事務(wù)T需要資源需要資源A,B,C,若申請,若申請A,B成功,而申成功,而申 請請C失敗,那么必須釋放失敗,那么必須釋放A,B,等待下一次重新申請。,等待下一次重新申請。 方法二:系統(tǒng)對所有數(shù)據(jù)項強加一個封鎖的順序,所方法二:系統(tǒng)對所有數(shù)據(jù)項強加一個封鎖的順序,所 有事務(wù)只能按順序封鎖數(shù)據(jù)項。有事務(wù)只能按順序封鎖數(shù)據(jù)項。 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理50 4.3.3 封鎖帶來的問題封鎖帶來的問題3-死鎖死鎖 例:四
46、個資源例:四個資源A,B,C,D編號編號1,2,3,4,事務(wù),事務(wù)T1需要資需要資 源源A,B,C,事務(wù),事務(wù)T2需要資源需要資源A,C,若都按從小到大,若都按從小到大 的順序申請資源,則不會發(fā)生死鎖。的順序申請資源,則不會發(fā)生死鎖。 n優(yōu)點:可以預(yù)防死鎖;優(yōu)點:可以預(yù)防死鎖; n缺點:代價高,會發(fā)生許多不必要的回退;缺點:代價高,會發(fā)生許多不必要的回退; n改進:允許死鎖發(fā)生,然后對死鎖進行診斷、解除;改進:允許死鎖發(fā)生,然后對死鎖進行診斷、解除; 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理51 4.3.3 封鎖帶來的問題封鎖帶來的問題3-死鎖死鎖 (3) 死鎖的診斷死鎖的診斷 測試方法:事務(wù)等待圖
47、;測試方法:事務(wù)等待圖; 事務(wù)用節(jié)點表示:事務(wù)用節(jié)點表示: 等待關(guān)系用箭頭表示;等待關(guān)系用箭頭表示; 死鎖條件:圖中存在循環(huán);死鎖條件:圖中存在循環(huán); 圖圖4.3 事務(wù)事務(wù) 的無的無 環(huán)等環(huán)等 待圖待圖 圖圖4.4 事務(wù)事務(wù) 的有的有 環(huán)依環(huán)依 賴圖賴圖 有環(huán)!有環(huán)! 死鎖!死鎖! 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理52 4.3.3 封鎖帶來的問題封鎖帶來的問題3-死鎖死鎖 (4)死鎖的解除死鎖的解除 DBMS定期測試死鎖是否發(fā)生,若已經(jīng)發(fā)生,則定期測試死鎖是否發(fā)生,若已經(jīng)發(fā)生,則 抽取某個事務(wù)作為犧牲品,撤銷該事務(wù),釋放它抽取某個事務(wù)作為犧牲品,撤銷該事務(wù),釋放它 所占有的所有資源,供其它事
48、務(wù)使用。所占有的所有資源,供其它事務(wù)使用。 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理53 4.3.4 并發(fā)操作的調(diào)度并發(fā)操作的調(diào)度 n1、事務(wù)的調(diào)度、串行調(diào)度和并發(fā)調(diào)度、事務(wù)的調(diào)度、串行調(diào)度和并發(fā)調(diào)度 事務(wù)的調(diào)度事務(wù)的調(diào)度 :事務(wù)的執(zhí)行次序稱為事務(wù)的執(zhí)行次序稱為“調(diào)度調(diào)度” ; 串行調(diào)度串行調(diào)度(Serial Schedule):多個事務(wù)依次執(zhí)行多個事務(wù)依次執(zhí)行 ; 并發(fā)調(diào)度并發(fā)調(diào)度:利用分時的方法,同時處理多個事務(wù)利用分時的方法,同時處理多個事務(wù) (Concurrent Schedule); nn個不同的事務(wù)有個不同的事務(wù)有n!種不同的串行調(diào)度,而有遠大于種不同的串行調(diào)度,而有遠大于 n!種并行調(diào)
49、度,并行調(diào)度是否正確可根據(jù)其是否可種并行調(diào)度,并行調(diào)度是否正確可根據(jù)其是否可 串行化。串行化。 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理54 4.3.4 并發(fā)操作的調(diào)度并發(fā)操作的調(diào)度 n2、可串行化概念、可串行化概念 n可串行化可串行化:如果一個并發(fā)調(diào)度的執(zhí)行結(jié)果與某一串如果一個并發(fā)調(diào)度的執(zhí)行結(jié)果與某一串 行調(diào)度的執(zhí)行結(jié)果等價,那么這個并發(fā)調(diào)度稱為行調(diào)度的執(zhí)行結(jié)果等價,那么這個并發(fā)調(diào)度稱為 “可串行化的調(diào)度可串行化的調(diào)度”,否則是不可串行化的調(diào)度;,否則是不可串行化的調(diào)度; n若并發(fā)調(diào)度是可串行化的,則認為該并發(fā)調(diào)度是正若并發(fā)調(diào)度是可串行化的,則認為該并發(fā)調(diào)度是正 確的。確的。 n如表如表4.1的并
50、發(fā)調(diào)度結(jié)果,與任何一種串行調(diào)度結(jié)的并發(fā)調(diào)度結(jié)果,與任何一種串行調(diào)度結(jié) 果都不一致,因此,該并發(fā)調(diào)度是錯誤的。果都不一致,因此,該并發(fā)調(diào)度是錯誤的。 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理55 4.3.4 并發(fā)操作的調(diào)度并發(fā)操作的調(diào)度 兩段封鎖協(xié)議兩段封鎖協(xié)議 n兩階段鎖協(xié)議的內(nèi)容:兩階段鎖協(xié)議的內(nèi)容: (1)在對任何一個數(shù)據(jù)進行讀寫操作之前,事務(wù)必須獲在對任何一個數(shù)據(jù)進行讀寫操作之前,事務(wù)必須獲 得對該數(shù)據(jù)的封鎖;得對該數(shù)據(jù)的封鎖; (2)在釋放一個封鎖之后在釋放一個封鎖之后(在事務(wù)結(jié)束之前在事務(wù)結(jié)束之前),事務(wù)不再,事務(wù)不再 獲得任何其他封鎖獲得任何其他封鎖 n遵守該協(xié)議的事務(wù)分為兩個階段:遵守
51、該協(xié)議的事務(wù)分為兩個階段: 獲得封鎖階段,也稱為獲得封鎖階段,也稱為“擴展擴展”階段;階段; 釋放封鎖階段,也稱為釋放封鎖階段,也稱為“收縮收縮”階段階段 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理56 4.3.4 并發(fā)操作的調(diào)度并發(fā)操作的調(diào)度 n兩階段鎖與可串行化的關(guān)系:兩階段鎖與可串行化的關(guān)系: 如果所有的事務(wù)都遵守如果所有的事務(wù)都遵守“兩段封鎖協(xié)議兩段封鎖協(xié)議”,則,則 所有可能的并發(fā)調(diào)度都是可串行化的所有可能的并發(fā)調(diào)度都是可串行化的 n由于兩階段鎖不能及時釋放鎖,因此仍有可能由于兩階段鎖不能及時釋放鎖,因此仍有可能 導(dǎo)致死鎖的發(fā)生。導(dǎo)致死鎖的發(fā)生。 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理57 4.
52、3.5 SQL對并發(fā)處理的支持對并發(fā)處理的支持 SQL中事務(wù)的存取模式中事務(wù)的存取模式 nREAD ONLY(只讀型只讀型):事務(wù)對數(shù)據(jù)庫的操作只能:事務(wù)對數(shù)據(jù)庫的操作只能 是讀操作。定義這個模式后,表示隨后的事務(wù)均是讀操作。定義這個模式后,表示隨后的事務(wù)均 是只讀型。是只讀型。 nREAD WRITE(讀寫型讀寫型):事務(wù)對數(shù)據(jù)庫的操作可:事務(wù)對數(shù)據(jù)庫的操作可 以是讀操作,也可以是寫操作。定義這個模式后,以是讀操作,也可以是寫操作。定義這個模式后, 表示隨后的事務(wù)均是讀寫型。在程序開始時默認表示隨后的事務(wù)均是讀寫型。在程序開始時默認 這種模式這種模式 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理58
53、4.3.5 SQL對并發(fā)處理的支持對并發(fā)處理的支持 SQL中事務(wù)的存取模式中事務(wù)的存取模式 n這兩種模式可用下列這兩種模式可用下列SQL語句定義:語句定義: SET TRANSACTION READ ONLY -() SET TRANSACTION READ WRITE 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理59 4.3.5 SQL對并發(fā)處理的支持對并發(fā)處理的支持 SQL中事務(wù)的隔離級別中事務(wù)的隔離級別 nSQL2提供事務(wù)的提供事務(wù)的4種隔離級別供用戶選擇:種隔離級別供用戶選擇: 1、SERIALIZABLE(可串行化可串行化):允許事務(wù)并發(fā)執(zhí)行,:允許事務(wù)并發(fā)執(zhí)行, 但須保證并發(fā)調(diào)度可串行化,是
54、默認級別。但須保證并發(fā)調(diào)度可串行化,是默認級別。 2、REPEATABLE READ(可重復(fù)讀可重復(fù)讀):只許事務(wù)讀已:只許事務(wù)讀已 提交的數(shù)據(jù),且兩次讀之間不許其他事務(wù)修改此數(shù)提交的數(shù)據(jù),且兩次讀之間不許其他事務(wù)修改此數(shù) 據(jù)。事務(wù)可以不可串行化。據(jù)。事務(wù)可以不可串行化。 3、READ COMMITTED(讀提交數(shù)據(jù)讀提交數(shù)據(jù)):允許事務(wù)讀:允許事務(wù)讀 已提交的數(shù)據(jù),但不要求已提交的數(shù)據(jù),但不要求“可重復(fù)讀可重復(fù)讀”。 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理60 4.3.5 SQL對并發(fā)處理的支持對并發(fā)處理的支持 SQL中事務(wù)的隔離級別中事務(wù)的隔離級別 4、READ UNCOMMITTED(可以讀
55、未提交數(shù)據(jù)可以讀未提交數(shù)據(jù)):允許:允許 事務(wù)讀已提交或未提交的數(shù)據(jù)。事務(wù)讀已提交或未提交的數(shù)據(jù)。 n上述四種級別可以用下列上述四種級別可以用下列SQL語句定義:語句定義: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE SET TRANSACTION ISOLATION LEVEL REPEATABLE READ SET TRANSACTION ISOLATION LEVEL READ COMMITTED SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理61 4.3.
56、5 SQL對并發(fā)處理的支持對并發(fā)處理的支持 SQL中事務(wù)的隔離級別中事務(wù)的隔離級別 隔離級別隔離級別 破壞的類型破壞的類型 與鎖的關(guān)系與鎖的關(guān)系 讀臟數(shù)據(jù)讀臟數(shù)據(jù) 不可重復(fù)讀不可重復(fù)讀 幻象幻象 SERIALIZABLENNN等同于等同于X鎖鎖 REPEATABLE READ NNY等同于等同于X鎖鎖 READ COMMITTED NYY等同于等同于S鎖鎖 READ UNCOMMITTED YYY等同于無鎖等同于無鎖 表表4.10 在每一個隔離級別上可能發(fā)生的破壞在每一個隔離級別上可能發(fā)生的破壞 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理62 4.3.5 SQL對并發(fā)處理的支持對并發(fā)處理的支持 幻象現(xiàn)
57、象與插入的正確處理幻象現(xiàn)象與插入的正確處理 n定義定義4.12 如果兩個事務(wù)并發(fā)訪問數(shù)據(jù)庫時不涉及到如果兩個事務(wù)并發(fā)訪問數(shù)據(jù)庫時不涉及到 共同的元組,但這兩個事務(wù)卻互相沖突,這個問題共同的元組,但這兩個事務(wù)卻互相沖突,這個問題 稱為稱為“幻象現(xiàn)象幻象現(xiàn)象” n插入、刪除操作時對相應(yīng)的基本表實現(xiàn)插入、刪除操作時對相應(yīng)的基本表實現(xiàn)X鎖,而不僅鎖,而不僅 僅封鎖當前元組。僅封鎖當前元組。 n例例T1: insert into s values(S10,BAO2,20,M) T2: select sum(age)from s -在在T1提交前等待提交前等待 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理63 4.
58、4 數(shù)據(jù)庫的完整性數(shù)據(jù)庫的完整性 4.4.1 完整性子系統(tǒng)完整性子系統(tǒng) n定義定義4.13 數(shù)據(jù)庫的完整性數(shù)據(jù)庫的完整性指數(shù)據(jù)的指數(shù)據(jù)的正確性正確性、有效有效 性、相容性性、相容性,防止錯誤數(shù)據(jù)進入數(shù)據(jù)庫。,防止錯誤數(shù)據(jù)進入數(shù)據(jù)庫。 n完整性子系統(tǒng)完整性子系統(tǒng)的主要功能:的主要功能: n監(jiān)督事務(wù)的執(zhí)行,并測試是否違反完整性規(guī)則監(jiān)督事務(wù)的執(zhí)行,并測試是否違反完整性規(guī)則 n若有違反現(xiàn)象,則采取恰當?shù)牟僮?,譬如拒絕操若有違反現(xiàn)象,則采取恰當?shù)牟僮?,譬如拒絕操 作、報告違反情況、改正錯誤等方法來處理作、報告違反情況、改正錯誤等方法來處理 n完整性規(guī)則集完整性規(guī)則集:由:由DBA或應(yīng)用程序員提供的有關(guān)數(shù)
59、或應(yīng)用程序員提供的有關(guān)數(shù) 據(jù)約束的規(guī)則集;據(jù)約束的規(guī)則集; 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理64 4.4.1 完整性子系統(tǒng)完整性子系統(tǒng) n完整性規(guī)則完整性規(guī)則 n什么時候使用規(guī)則進行檢查什么時候使用規(guī)則進行檢查(稱為規(guī)則的稱為規(guī)則的“觸發(fā)條觸發(fā)條 件件”) n要檢查什么樣的錯誤要檢查什么樣的錯誤(稱為稱為“約束條件約束條件”或或“謂謂 詞詞”) n如果查出錯誤,應(yīng)該怎么辦如果查出錯誤,應(yīng)該怎么辦(稱為稱為“ELSE子句子句”, 即違反時要做的動作即違反時要做的動作) 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理65 4.4.2 SQL中的完整性約束域約束中的完整性約束域約束 n域約束域約束 -() 用
60、用“CREATE DOMAIN”定義新的域,并且還可定義新的域,并且還可 出現(xiàn)出現(xiàn)CHECK子句子句 n定義一個新的域定義一個新的域COLOR,可用下列語句實現(xiàn):,可用下列語句實現(xiàn): CREATE DOMAIN COLOR CHAR(6) DEFAULT ? CONSTRAINT V_COLORS CHECK(VALUE IN (Red,Yellow, Blue,Green,? ); 東華大學 數(shù)學02 數(shù)據(jù)庫系統(tǒng)原理66 4.4.2 SQL中的完整性約束中的完整性約束 基本表的約束基本表的約束 n候選鍵的定義候選鍵的定義 UNIQUE()或或PRIMARY KEY() n外鍵的定義外鍵的定義
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 研究型大學可持續(xù)發(fā)展與生態(tài)校園建設(shè)方案
- 數(shù)學跨學科教學的背景與意義
- 工業(yè)遺產(chǎn)保護中的跨學科合作策略
- 會展展臺搭建合同范本
- 商城維修報價合同范例
- 倉庫用地合同范本
- 呂材購銷合同范本
- 員工還款合同范本
- 加盟商意向合同范例
- 關(guān)于分利合同范本
- 2025年湖南大眾傳媒職業(yè)技術(shù)學院單招職業(yè)技能測試題庫學生專用
- 一年級珍惜糧食主題班會學習教案
- 2025年南京旅游職業(yè)學院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 【2025年衛(wèi)生健康宣傳日】世界防治結(jié)核病日
- 2025年高縣縣屬國企業(yè)公開招聘工作人員高頻重點提升(共500題)附帶答案詳解
- 海岸動力學英文課件Coastal Hydrodynamics-復(fù)習
- 第7課 課題二《清潔工具與生活·創(chuàng)意清潔工具設(shè)計》(說課稿)-2023-2024學年四年級下冊綜合實踐活動浙教版
- 碳足跡研究-洞察分析
- DB11-T 1191.3-2024 實驗室危險化學品安全管理要求 第3部分:科研單位
- 規(guī)范填寫臨時用電作業(yè)票
- 日間化療中心管理制度
評論
0/150
提交評論