第五章 數(shù)據(jù)庫設(shè)計和ER模型.ppt_第1頁
第五章 數(shù)據(jù)庫設(shè)計和ER模型.ppt_第2頁
第五章 數(shù)據(jù)庫設(shè)計和ER模型.ppt_第3頁
第五章 數(shù)據(jù)庫設(shè)計和ER模型.ppt_第4頁
第五章 數(shù)據(jù)庫設(shè)計和ER模型.ppt_第5頁
免費預(yù)覽已結(jié)束,剩余90頁可下載查看

下載本文檔

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

文檔簡介

1、第4章 數(shù)據(jù)庫管理,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,2,主要內(nèi)容,4.1 事務(wù) 4.2 數(shù)據(jù)庫的恢復(fù) 4.3 數(shù)據(jù)庫的并發(fā)控制 4.4 數(shù)據(jù)庫的完整性 4.5 數(shù)據(jù)庫的安全性 4.6 小結(jié),東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,3,4.1 事務(wù),在DBS運行時,DBMS負責(zé)對DB進行監(jiān)控,以保證系統(tǒng)正常運行,防止數(shù)據(jù)意外丟失和不一致數(shù)據(jù)的產(chǎn)生。 DBMS對DB的監(jiān)控,稱為數(shù)據(jù)庫的管理或數(shù)據(jù)庫的保護。主要有四個方面:數(shù)據(jù)庫的恢復(fù)、并發(fā)控制、完整性控制和安全性控制。每一方面構(gòu)成了DBMS的一個子系統(tǒng)。 事務(wù)是DBS運行的最小邏輯工作單位。所有對數(shù)據(jù)庫的操作,都要以事務(wù)作為一個整體單位來執(zhí)行或撤銷

2、。,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,4,4.1.1 事務(wù)的定義(1),定義4.1 事務(wù)(transaction)是構(gòu)成單一邏輯工作單元的操作集合。不論發(fā)生任何情況,DBS必須保證事務(wù)能正確、完整地執(zhí)行。 一個事務(wù)由應(yīng)用程序中的一組操作序列組成。事務(wù)以BEGIN TRANSACTION開始,以COMMIT(提交)或ROLLBACK(回滾)結(jié)束。,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,5,4.1.1 事務(wù)的定義(2),COMMIT:當(dāng)事務(wù)所引用的所有數(shù)據(jù)的邏輯都正確時,COMMIT使得自從事務(wù)開始以來所執(zhí)行的所有數(shù)據(jù)修改成為數(shù)據(jù)庫的永久部分,并釋放連接占用的資源。 如果所提交的事務(wù)涉及到多個服務(wù)

3、器或一個服務(wù)器上的多個數(shù)據(jù)庫,則使用兩階段提交協(xié)議,以便提交所有涉及該事務(wù)的服務(wù)器或數(shù)據(jù)庫。,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,6,4.1.1 事務(wù)的定義(3),當(dāng)在嵌套事務(wù)中使用時,內(nèi)部事務(wù)的提交并不釋放資源或使其修改成為永久修改。只有在提交了外部事務(wù)時,數(shù)據(jù)修改才具有永久性,而且資源才會被釋放。 ROLLBACK:將事務(wù)回滾到事務(wù)的起點或事務(wù)內(nèi)的某個保存點。,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,7,4.1.1 例子:事務(wù)及其性質(zhì),例4.1 設(shè)銀行數(shù)據(jù)庫中有一轉(zhuǎn)賬事務(wù)T,從賬號A轉(zhuǎn)一筆款子($50)到賬號B。 相應(yīng)的事務(wù)T:,BEGIN TRANSACTION read(A); A:=A5

4、0; write(A); if (A0) ROLLBACK; else read(B); B:=B + 50; write(B); COMMIT;,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,8,例:更新學(xué)生S1的成績,若有空成績,回滾。,select * from sc where s#=s1 order by c#; begin transaction update sc set score = score*0.9+10 where s#=s1 ; select * from sc where s#=s1 order by c#; if (exists(select * from sc where

5、 s#=s1 and score is null) rollback transaction else commit transaction select * from sc where s#=s1 order by c#;,錯:score = null,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,9,4.1.2 事務(wù)的ACID性質(zhì),原子性(Atomicity):事務(wù)是一個不可分割的工作單元; 一致性(Consistency) :數(shù)據(jù)不會因事務(wù)的執(zhí)行而遭受破壞; 隔離性(Isolation):在多個事務(wù)并發(fā)執(zhí)行時,系統(tǒng)應(yīng)保證與這些事務(wù)先后單獨執(zhí)行時的結(jié)果一樣; 持久性(Durability):一個事務(wù)

6、一旦完成全部操作后,它對數(shù)據(jù)庫的所有更新應(yīng)永久地反映在數(shù)據(jù)庫中;,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,10,4.1.2 事務(wù)提交和事務(wù)撤銷,事務(wù)的所有操作都完成了,則事務(wù)提交(COMMIT),否則事務(wù)撤銷(ROLLBACK) BEGIN TRANSACTION標(biāo)志事務(wù)開始執(zhí)行 BEGIN TRANSACTION和COMMIT或ROLLBACK一起保證了事務(wù)的四個性質(zhì) 對數(shù)據(jù)庫訪問的兩個基本操作:讀和寫,但完成寫操作后,數(shù)據(jù)可能暫時放在內(nèi)存中,而非直接寫進數(shù)據(jù)庫。,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,11,4.2 數(shù)據(jù)庫的恢復(fù),DBMS的恢復(fù)管理子系統(tǒng)采取一系列措施保證在任何情況下保持事務(wù)的原子

7、性和持久性,確保數(shù)據(jù)不丟失、不破壞。 定義4.2 系統(tǒng)能把數(shù)據(jù)庫從被破壞、不正確的狀態(tài)恢復(fù)到最近一個正確的狀態(tài),DBMS的這種能力稱為數(shù)據(jù)庫的可恢復(fù)性(Recovery)。,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,12,4.2 恢復(fù)和原子性的聯(lián)系,銀行轉(zhuǎn)賬系統(tǒng) A=2000 B=1000,事務(wù) A=A-100 B=B+100,output(A),Output(B),斷電或其 他故障,若沒有事務(wù)的原子性,那么重新啟動事務(wù)時要么A因為再執(zhí)行一遍而為1800,要么B因從未執(zhí)行而保持原值,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,13,4.2.1 典型的恢復(fù)策略(1),基本原則:“冗余”,即數(shù)據(jù)庫重復(fù)存儲 典型

8、的恢復(fù)策略: (1)平時做好兩件事:轉(zhuǎn)儲和建立日志 周期地(比如一天一次)對整個數(shù)據(jù)庫進行拷貝,轉(zhuǎn)儲到另一個磁盤或磁帶一類存儲介質(zhì)中。 建立日志數(shù)據(jù)庫。記錄事務(wù)的開始、結(jié)束及數(shù)據(jù)每一次插入、刪除和修改前后的值,并寫到“日志”庫中,以便有案可查。,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,14,4.2.1 典型的恢復(fù)策略(2),(2) 一旦發(fā)生數(shù)據(jù)庫故障,分兩種情況進行處理: 如果數(shù)據(jù)庫遇到災(zāi)難性故障,遭到物理性破壞,則裝入最近一次數(shù)據(jù)庫備份,再利用日志庫重做(REDO)已提交的事務(wù),把數(shù)據(jù)庫恢復(fù)到故障前的狀態(tài)。 如果數(shù)據(jù)庫未遭到物理性破壞,但破壞了數(shù)據(jù)庫的一致性(某些數(shù)據(jù)已不正確),則利用日志庫撤消

9、(UNDO)所有不可靠的修改,再利用日志庫重做(REDO)已提交的、但對數(shù)據(jù)庫的更新尚留在內(nèi)存緩沖區(qū)的事務(wù),把數(shù)據(jù)庫恢復(fù)到正確的狀態(tài)。,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,15,4.2.2 故障類型和恢復(fù)方法(1),事務(wù)故障 可以預(yù)期的事務(wù)故障:如存款余額透支等,在程序中進行判斷和處理,當(dāng)事務(wù)執(zhí)行到ROLLBACK時,系統(tǒng)對事務(wù)執(zhí)行UNDO; 非預(yù)期事務(wù)故障:如運算溢出、數(shù)據(jù)錯誤、死鎖等,由系統(tǒng)直接執(zhí)行UNDO;,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,16,4.2.2 故障類型和恢復(fù)方法(2),系統(tǒng)故障(軟故障) 使系統(tǒng)停止運行并要求重啟的故障,如硬件故障、軟件錯誤或掉電等等。系統(tǒng)故障使所有正在

10、運行的事務(wù)非正常終止,破壞了數(shù)據(jù)的完整性或一致性,但不會造成數(shù)據(jù)庫的物理性破壞。 重啟時,恢復(fù)數(shù)據(jù)庫: 對未完成的事務(wù)進行UNDO處理; 對已提交但更新仍留在緩沖區(qū)的事務(wù)進行REDO處理。,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,17,4.2.2 故障類型和恢復(fù)方法(3),介質(zhì)故障(硬故障) 磁盤物理故障或遭受病毒破壞,使硬盤上的物理數(shù)據(jù)庫遭到毀滅性破壞。此時,恢復(fù)過程如下: (1)重裝轉(zhuǎn)儲的后備副本到新的磁盤,使數(shù)據(jù)庫恢復(fù)到轉(zhuǎn)儲時的一致狀態(tài)。 (2)在日志中找出轉(zhuǎn)儲以后所有已提交的事務(wù)。 (3)對這些已提交的事務(wù)進行REDO處理,將數(shù)據(jù)庫恢復(fù)到故障前某一時刻的一致狀態(tài)。,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)

11、庫系統(tǒng)原理,18,4.2.2 故障類型和恢復(fù)方法(4),事務(wù)故障和系統(tǒng)故障的恢復(fù)由系統(tǒng)自動進行,而介質(zhì)故障的恢復(fù)需要DBA配合執(zhí)行。,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,19,4.2.3 檢查點方法(1),什么是檢查點方法 在DBS運行時,DBMS定時設(shè)置檢查點,在檢查點時刻把對DB的修改真正寫入磁盤,并在日志文件中寫入一條檢查點記錄(該過程無需人工干預(yù))。當(dāng)DB恢復(fù)時,只需恢復(fù)檢查點后面的事務(wù)。,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,20,4.2.3 檢查點方法(2),東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,21,4.2.3 檢查點方法(3),檢查點方法的恢復(fù)算法 (1)根據(jù)日志文件建立事務(wù)重做隊

12、列和事務(wù)撤銷隊列; 方法:正向掃描日志文件,將最近一次檢查點之后故障發(fā)生之前已經(jīng)提交的事務(wù),列入REDO隊列;將故障發(fā)生之前尚未提交的事務(wù),列入UNDO隊列;,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,22,4.2.3 檢查點方法(4),(2)對重做隊列中的事務(wù)進行REDO處理,對撤消隊列中的事務(wù)進行UNDO處理; 方法:正向掃描日志文件,對REDO隊列中的每個事務(wù)重新執(zhí)行對數(shù)據(jù)庫的更新;反向掃描日志文件,對UNDO隊列中的每個事務(wù)執(zhí)行逆操作。,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,23,4.2.4 SQL對事務(wù)的支持,SQL支持Commit和Rollback來提交或回滾事務(wù);執(zhí)行rollback時,

13、強制關(guān)閉所有游標(biāo)。而執(zhí)行commit時游標(biāo)是否關(guān)閉,可以通過SET CURSOR_ CLOSE_ON_COMMITON|OFF控制。 由begin transaction定義顯式事務(wù),它可以顯式地在其中定義事務(wù)的啟動和結(jié)束。 若無begin transaction,則隱含著程序開始,則事務(wù)開始;遇到commit/rollback或程序結(jié)束,則事務(wù)結(jié)束。,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,24,4.3 數(shù)據(jù)庫的并發(fā)控制,4.3.1 并發(fā)操作帶來的4個問題 4.3.2 封鎖技術(shù) 4.3.3 封鎖帶來的問題 4.3.4 并發(fā)操作的調(diào)度 4.3.5 SQL對并發(fā)處理的支持,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫

14、系統(tǒng)原理,25,4.3.1 并發(fā)操作帶來的問題,1、丟失更新問題:當(dāng)兩個或多個事務(wù)選擇同一行,然后基于最初選定的值更新該行時,會發(fā)生丟失更新問題。每個事務(wù)都不知道其它事務(wù)的存在。最后的更新將重寫由其它事務(wù)所做的更新,這將導(dǎo)致數(shù)據(jù)丟失。 2、讀臟數(shù)據(jù)問題:當(dāng)?shù)诙€事務(wù)選擇其它事務(wù)正在更新的行時,第二個事務(wù)正在讀取的數(shù)據(jù)還沒有確認并且可能被其它事務(wù)所更改或回滾已做的修改。,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,26,4.3.1 并發(fā)操作帶來的問題,3、錯誤求和問題: 4、不可重復(fù)讀問題:當(dāng)?shù)诙€事務(wù)多次訪問同一行,而且,每次讀取的數(shù)據(jù)都是由已更改了該數(shù)據(jù)的事務(wù)提交的,造成多次讀取的數(shù)據(jù)不一致。 5、

15、幻像讀問題:當(dāng)對某行執(zhí)行插入或刪除操作,而該行屬于某個事務(wù)正在讀取的行的范圍時,會發(fā)生幻像讀問題。,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,27,4.3.1 問題1-丟失更新,表4.1 在時間t7丟失了事務(wù)T1的更新 串行執(zhí)行結(jié)果:應(yīng)該為140(T1先T2后)或170 (T2先T1后),東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,28,4.3.1 問題2-讀臟數(shù)據(jù)(1),表4.2 事務(wù)T2在時間t4讀了未提交的A值(70) 臟數(shù)據(jù):未提交的隨后被撤銷的數(shù)據(jù)。T2只是讀了臟數(shù)據(jù),而未破壞數(shù)據(jù)庫的完整性。,備注,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,29,4.3.1 問題2-讀臟數(shù)據(jù)(2),表4.3 事務(wù)T2在

16、時間t4讀了未提交的A值,并在時間t8丟失了自己的更新,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,30,4.3.1 問題3-錯誤求和,表4.4 事務(wù)T1進行了不一致的分析,40+50+20 40+50+30,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,31,4.3.1 問題4-不可重復(fù)讀,表4.5 事務(wù)T1兩次讀取A的值,卻得到了不同的結(jié)果,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,32,4.3.2 封鎖技術(shù),定義4.3 鎖(lock)是一個與數(shù)據(jù)項相關(guān)的變量,對可能應(yīng)用于該數(shù)據(jù)項上的操作而言,鎖描述了該數(shù)據(jù)項的狀態(tài)。 封鎖技術(shù) 1、排他型封鎖(X鎖) 2、共享型封鎖(S鎖),東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,

17、33,4.3.2 封鎖技術(shù) X鎖,1、排他型封鎖(X鎖、寫鎖) 定義4.4 如果事務(wù)T對某個數(shù)據(jù)R(可以是數(shù)據(jù)項、記錄、數(shù)據(jù)集或整個數(shù)據(jù)庫)實現(xiàn)了X鎖,那么在T對數(shù)據(jù)R解除鎖之前,不允許其它事務(wù)對該數(shù)據(jù)添加任何類型的鎖,這種鎖稱為“X鎖”。,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,34,4.3.2 封鎖技術(shù) X鎖,使用X鎖的操作有兩個: (1) 申請X鎖操作“XFIND R”: 對數(shù)據(jù)R申請X鎖,若申請成功,則可以讀寫數(shù)據(jù)R;若申請不成功,則進入等待隊列,一直到獲準(zhǔn)X鎖,事務(wù)才能繼續(xù)。 (2) 解除X鎖操作“XRELEASE R”: 解除對數(shù)據(jù)R的X鎖。,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,35,

18、4.3.2 封鎖技術(shù) X鎖,PX協(xié)議: 任何企圖更新記錄R的事務(wù)必須先執(zhí)行“XFIND R”操作,以獲得對R的X鎖,才能讀或?qū)懹涗汻;如果未獲準(zhǔn)X鎖,那么這個事務(wù)進入等待隊列,一直到獲準(zhǔn)X鎖,事務(wù)才能繼續(xù)做下去。 PXC協(xié)議 X鎖的解除操作應(yīng)該合并到事務(wù)的結(jié)束(COMMIT或ROLLBACK)操作中,在COMMIT和ROLLBACK中隱含了釋放X鎖的操作。,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,36,例4.7:使用X鎖封鎖解決數(shù)據(jù)丟失(表4.1表4.6),表4.6 等T1更新完成后再執(zhí)行T2,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,37,4.3.2 封鎖技術(shù) S鎖,2、共享型封鎖(S鎖、讀鎖)可以并

19、發(fā)的讀 定義4.5 如果事務(wù)T對某數(shù)據(jù)加上S鎖后,仍允許其它事務(wù)再對該數(shù)據(jù)加S鎖,但在對該數(shù)據(jù)的所有S鎖都解除之前不允許任何事務(wù)對該數(shù)據(jù)加X鎖。 使用S鎖的操作有三個: (1)申請S鎖操作“SFIND R”:對數(shù)據(jù)R申請S鎖,若成功,則可以讀R但不可以寫R;若不成功,則進入等待隊列,一直到獲準(zhǔn)S鎖,事務(wù)才能繼續(xù);,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,38,4.3.2 封鎖技術(shù) S鎖,(2) 升級和寫操作“UPDX R”: 對數(shù)據(jù)R的S鎖升級為X鎖,若成功,則可寫R;否則進入等待隊列; (3) 解除S鎖操作“SRELEASE R”: 釋放對數(shù)據(jù)R的S鎖; PS協(xié)議 獲準(zhǔn)S鎖的事務(wù)只能讀數(shù)據(jù),若要

20、寫數(shù)據(jù)必須用“UPDX R”操作把S鎖升級為X鎖。 PSC協(xié)議 由于S鎖只允許讀數(shù)據(jù),所以S鎖的解除不必非要合并到事務(wù)的結(jié)束,可以隨時根據(jù)需要解除S鎖。,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,39,例4.8:使用S鎖封鎖解決數(shù)據(jù)丟失(表4.1表4.7),表4.7 更新未丟失,但在時間t7發(fā)生了死鎖,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,40,例:利用鎖技術(shù)解決讀臟數(shù)據(jù)問題(表4.2),表4.2 事務(wù)T2在時間t4讀了未提交的A值(70),東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,41,例:利用鎖技術(shù)解決讀臟數(shù)據(jù)問題(表4.3),東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,42,例:利用鎖技術(shù)解決錯誤求和問題(表

21、4.4),表4.4 事務(wù)T1進行了不一致的分析,除非同時申請A,B,C的鎖,否則無法避免錯誤求和問題。,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,43,4.3.2 封鎖技術(shù)封鎖的相容矩陣,注: N=NO,不相容的請求 Y=YES,相容的請求; X,S,:分別表示X鎖,S鎖,無鎖; 如果兩個封鎖是不相容的,則后提出封鎖的事務(wù)要等待。,只能對同一數(shù)據(jù)同時加多個S鎖;而S鎖與X鎖、X鎖與X鎖都不能同時加在同一數(shù)據(jù)上;,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,44,4.3.2 封鎖技術(shù)封鎖的粒度,封鎖對象的大小稱為封鎖的粒度(granularity) 封鎖的對象 物理單元:頁(數(shù)據(jù)頁或索引頁)、塊 邏輯單元:屬

22、性值、屬性值集合、元組、關(guān)系、索引項、整個索引、整個數(shù)據(jù)庫 封鎖的粒度越小,系統(tǒng)并發(fā)度越高,系統(tǒng)開銷越大; 封鎖的粒度越大,系統(tǒng)并發(fā)度越低,系統(tǒng)開銷越?。?東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,45,4.3.2 封鎖技術(shù)封鎖的粒度,begin transaction update s set age=19 where s#=s1 -只對表S的s#=s1條記錄加了X鎖 -其它事務(wù)可以訪問表S中的其它記錄 -如:select * from s where s#=s2 - update s set age=22 where s#=s3 select s#,sname from s where s#=s

23、3 -只對表S的字段S#,SNAME加了S鎖(減小封鎖粒度,提高并發(fā)度),此時任何其它事務(wù)都不能修改該數(shù)據(jù)。一旦讀取數(shù)據(jù)結(jié)束,便立即釋放資源上的S鎖。,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,46,4.3.3 封鎖帶來的問題1-活鎖,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,47,4.3.3 封鎖帶來的問題2-餓死,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,48,4.3.3 封鎖帶來的問題3-死鎖,表4.9在時間t4兩個事務(wù)發(fā)生死鎖,(1)死鎖的定義: 定義4.9 系統(tǒng)中有兩個或兩個以上的事務(wù)都處于等待狀態(tài),并且每個事務(wù)都在等待其中另一個事務(wù)解除封鎖,它才能繼續(xù)執(zhí)行下去,結(jié)果造成任何一個事務(wù)都無法繼續(xù)執(zhí)行,這

24、種現(xiàn)象稱系統(tǒng)進入了“死鎖”狀態(tài)。,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,49,4.3.3 封鎖帶來的問題3-死鎖,(2)死鎖的預(yù)防 方法一:要求每個事務(wù)在開始執(zhí)行時封鎖它所使用的所有數(shù)據(jù);要么一次全部封鎖,要么全不封鎖; 例:某事務(wù)T需要資源A,B,C,若申請A,B成功,而申請C失敗,那么必須釋放A,B,等待下一次重新申請。 方法二:系統(tǒng)對所有數(shù)據(jù)項強加一個封鎖的順序,所有事務(wù)只能按順序封鎖數(shù)據(jù)項。,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,50,4.3.3 封鎖帶來的問題3-死鎖,例:四個資源A,B,C,D編號1,2,3,4,事務(wù)T1需要資源A,B,C,事務(wù)T2需要資源A,C,若都按從小到大的順序申

25、請資源,則不會發(fā)生死鎖。 優(yōu)點:可以預(yù)防死鎖; 缺點:代價高,會發(fā)生許多不必要的回退; 改進:允許死鎖發(fā)生,然后對死鎖進行診斷、解除;,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,51,4.3.3 封鎖帶來的問題3-死鎖,(3) 死鎖的診斷 測試方法:事務(wù)等待圖; 事務(wù)用節(jié)點表示: 等待關(guān)系用箭頭表示; 死鎖條件:圖中存在循環(huán);,有環(huán)! 死鎖!,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,52,4.3.3 封鎖帶來的問題3-死鎖,(4)死鎖的解除 DBMS定期測試死鎖是否發(fā)生,若已經(jīng)發(fā)生,則抽取某個事務(wù)作為犧牲品,撤銷該事務(wù),釋放它所占有的所有資源,供其它事務(wù)使用。,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,53,

26、4.3.4 并發(fā)操作的調(diào)度,1、事務(wù)的調(diào)度、串行調(diào)度和并發(fā)調(diào)度 事務(wù)的調(diào)度 :事務(wù)的執(zhí)行次序稱為“調(diào)度” ; 串行調(diào)度(Serial Schedule):多個事務(wù)依次執(zhí)行 ; 并發(fā)調(diào)度:利用分時的方法,同時處理多個事務(wù)(Concurrent Schedule); n個不同的事務(wù)有n!種不同的串行調(diào)度,而有遠大于n!種并行調(diào)度,并行調(diào)度是否正確可根據(jù)其是否可串行化。,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,54,4.3.4 并發(fā)操作的調(diào)度,2、可串行化概念 可串行化:如果一個并發(fā)調(diào)度的執(zhí)行結(jié)果與某一串行調(diào)度的執(zhí)行結(jié)果等價,那么這個并發(fā)調(diào)度稱為“可串行化的調(diào)度”,否則是不可串行化的調(diào)度; 若并發(fā)調(diào)度是

27、可串行化的,則認為該并發(fā)調(diào)度是正確的。 如表4.1的并發(fā)調(diào)度結(jié)果,與任何一種串行調(diào)度結(jié)果都不一致,因此,該并發(fā)調(diào)度是錯誤的。,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,55,4.3.4 并發(fā)操作的調(diào)度兩段封鎖協(xié)議,兩階段鎖協(xié)議的內(nèi)容: (1)在對任何一個數(shù)據(jù)進行讀寫操作之前,事務(wù)必須獲得對該數(shù)據(jù)的封鎖; (2)在釋放一個封鎖之后(在事務(wù)結(jié)束之前),事務(wù)不再獲得任何其他封鎖 遵守該協(xié)議的事務(wù)分為兩個階段: 獲得封鎖階段,也稱為“擴展”階段; 釋放封鎖階段,也稱為“收縮”階段,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,56,4.3.4 并發(fā)操作的調(diào)度,兩階段鎖與可串行化的關(guān)系: 如果所有的事務(wù)都遵守“兩段封鎖

28、協(xié)議”,則所有可能的并發(fā)調(diào)度都是可串行化的 由于兩階段鎖不能及時釋放鎖,因此仍有可能導(dǎo)致死鎖的發(fā)生。,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,57,4.3.5 SQL對并發(fā)處理的支持SQL中事務(wù)的存取模式,READ ONLY(只讀型):事務(wù)對數(shù)據(jù)庫的操作只能是讀操作。定義這個模式后,表示隨后的事務(wù)均是只讀型。 READ WRITE(讀寫型):事務(wù)對數(shù)據(jù)庫的操作可以是讀操作,也可以是寫操作。定義這個模式后,表示隨后的事務(wù)均是讀寫型。在程序開始時默認這種模式,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,58,4.3.5 SQL對并發(fā)處理的支持SQL中事務(wù)的存取模式,這兩種模式可用下列SQL語句定義: SET

29、TRANSACTION READ ONLY -() SET TRANSACTION READ WRITE,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,59,4.3.5 SQL對并發(fā)處理的支持SQL中事務(wù)的隔離級別,SQL2提供事務(wù)的4種隔離級別供用戶選擇: 1、SERIALIZABLE(可串行化):允許事務(wù)并發(fā)執(zhí)行,但須保證并發(fā)調(diào)度可串行化,是默認級別。 2、REPEATABLE READ(可重復(fù)讀):只許事務(wù)讀已提交的數(shù)據(jù),且兩次讀之間不許其他事務(wù)修改此數(shù)據(jù)。事務(wù)可以不可串行化。 3、READ COMMITTED(讀提交數(shù)據(jù)):允許事務(wù)讀已提交的數(shù)據(jù),但不要求“可重復(fù)讀”。,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)

30、庫系統(tǒng)原理,60,4.3.5 SQL對并發(fā)處理的支持SQL中事務(wù)的隔離級別,4、READ UNCOMMITTED(可以讀未提交數(shù)據(jù)):允許事務(wù)讀已提交或未提交的數(shù)據(jù)。 上述四種級別可以用下列SQL語句定義: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE SET TRANSACTION ISOLATION LEVEL REPEATABLE READ SET TRANSACTION ISOLATION LEVEL READ COMMITTED SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED,東華大學(xué) 數(shù)學(xué)

31、02 數(shù)據(jù)庫系統(tǒng)原理,61,4.3.5 SQL對并發(fā)處理的支持SQL中事務(wù)的隔離級別,表4.10 在每一個隔離級別上可能發(fā)生的破壞,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,62,4.3.5 SQL對并發(fā)處理的支持幻象現(xiàn)象與插入的正確處理,定義4.12 如果兩個事務(wù)并發(fā)訪問數(shù)據(jù)庫時不涉及到共同的元組,但這兩個事務(wù)卻互相沖突,這個問題稱為“幻象現(xiàn)象” 插入、刪除操作時對相應(yīng)的基本表實現(xiàn)X鎖,而不僅僅封鎖當(dāng)前元組。 例T1: insert into s values(S10,BAO2,20,M) T2: select sum(age)from s -在T1提交前等待,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,

32、63,4.4 數(shù)據(jù)庫的完整性4.4.1 完整性子系統(tǒng),定義4.13 數(shù)據(jù)庫的完整性指數(shù)據(jù)的正確性、有效性、相容性,防止錯誤數(shù)據(jù)進入數(shù)據(jù)庫。 完整性子系統(tǒng)的主要功能: 監(jiān)督事務(wù)的執(zhí)行,并測試是否違反完整性規(guī)則 若有違反現(xiàn)象,則采取恰當(dāng)?shù)牟僮?,譬如拒絕操作、報告違反情況、改正錯誤等方法來處理 完整性規(guī)則集:由DBA或應(yīng)用程序員提供的有關(guān)數(shù)據(jù)約束的規(guī)則集;,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,64,4.4.1 完整性子系統(tǒng),完整性規(guī)則 什么時候使用規(guī)則進行檢查(稱為規(guī)則的“觸發(fā)條件”) 要檢查什么樣的錯誤(稱為“約束條件”或“謂詞”) 如果查出錯誤,應(yīng)該怎么辦(稱為“ELSE子句”,即違反時要做的動

33、作),東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,65,4.4.2 SQL中的完整性約束域約束,域約束 -() 用“CREATE DOMAIN”定義新的域,并且還可出現(xiàn)CHECK子句 定義一個新的域COLOR,可用下列語句實現(xiàn): CREATE DOMAIN COLOR CHAR(6) DEFAULT ? CONSTRAINT V_COLORS CHECK(VALUE IN (Red,Yellow, Blue,Green,? );,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,66,4.4.2 SQL中的完整性約束基本表的約束,候選鍵的定義 UNIQUE()或PRIMARY KEY() 外鍵的定義 FOREIGN

34、 KEY() REFERENCES () ON DELETE ON UPDATE,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,67,4.4.2 SQL中的完整性約束基本表的約束,刪除或修改參照表中元組時的考慮 (1)NO ACTION:對依賴表無影響; (2)CASCADE:刪除或修改依賴表中對應(yīng)的元組; (3)RESTRICT:當(dāng)依賴表中無對應(yīng)元組時,才刪除或修改; (4)SET NULL:將依賴表中對應(yīng)外鍵設(shè)為null; (5)SET DEFAULT:將依賴表中對應(yīng)外鍵設(shè)為默認值;,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,68,4.4.2 SQL中的完整性約束基本表的約束,“檢查約束”的定義: CHE

35、CK() CREATE TABLE SS ( S# CHAR(4), SNAME CHAR(8) NOT NULL, AGE SMALLINT, SEX CHAR(1), CONSTRAINT PK_S# PRIMARY KEY(S#), CHECK (age=15 and (sex=m and age=35) or (sex=f and age = 30),在條件表達式中盡量不要涉及到其它關(guān)系,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,69,4.4.2 SQL中的完整性約束關(guān)于數(shù)據(jù)庫完整性的例子,CREATE TABLE SC2( S# CHAR(4), C# CHAR(4), SCORE SMA

36、LLINT, PRIMARY KEY(SNO,NO), CHECK(S# IN(SELECT S# FROM S),CHECK(C# IN(SELECT C# FROM C) ;,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,70,4.4.2 SQL中的完整性約束關(guān)于數(shù)據(jù)庫完整性的例子, 在SC中插入一個元組,若C#值在C中不存在,則系統(tǒng)將拒絕這個插入操作。 在SC中插入一個元組,若S#值在S中不存在,則系統(tǒng)將拒絕這個插入操作。 在S中刪除一個元組,這個操作將與關(guān)系SC中的檢查子句無關(guān)。若此時SC中存在被刪學(xué)生的選課元組時,SC將違反檢查子句中條件。,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,71,4.4.2

37、 SQL中的完整性約束 斷 言,如果完整性約束牽涉面較廣,與多個關(guān)系有關(guān),或者與聚合操作有關(guān),那么SQL2提供“斷言” (Assertions)機制讓用戶書寫完整性約束 CHECK ASSERTION CHECK() DROP ASSERTION 每位教師開設(shè)的課程不能超過10門。 CREATE ASSERTION ASSE1 CHECK -() (10=ALL(SELECT COUNT(C#) FROM C GROUP BY T#);,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,72,4.4.2 SQL中的完整性約束 斷 言,不允許男生選修WU老師的課程 create assertion asse2

38、 check -() (not exists (select * from sc where c# in (select c# from c,t where c.t#=t.t# and tname=wu) and s# in (select s# from s where sex=M),東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,73,4.4.2 SQL中的完整性約束 斷 言,每門課程最多50名男生選修 CREATE ASSERTION ASSE3 CHECK -() (50=ALL(SELECT count(sc.s#) FROM s,sc WHERE s.s#=sc.s# AND sex=M GR

39、OUP BY c#),東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,74,4.4.3 約束可延遲性 -(),SQL中所有約束都定義有延遲模式和約束檢驗時間 1、延遲模式 (1)NOT DEFERRABLE(立即執(zhí)行):對事務(wù)中每一更新語句執(zhí)行完以后,立即對數(shù)據(jù)進行約束檢查; (2)DEFERRABLE(延遲執(zhí)行):整個事務(wù)結(jié)束后,才進行約束檢查,結(jié)果正確才能提交; 2、約束的初始檢查時間 (1)INITIALLY IMMEDIATE(立即檢查):對應(yīng)延遲模式是DEFERRABLE或NOT DEFERRABLE,其約束檢查時在事務(wù)一開始就是IMMEDIATE方式。,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,75

40、,4.4.3 約束可延遲性 -(),(2)INITIALLY DEFERRED(延遲檢查):對應(yīng)延遲模式是DEFERRABLE,約束檢查時在事務(wù)一開始就是DEFERRED方式; 3、延遲模式和約束檢查時間之間的聯(lián)系,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,76,4.4.4 SQL3的觸發(fā)器,1、觸發(fā)器結(jié)構(gòu) 定義4.14 觸發(fā)器(Trigger)是一個能由系統(tǒng)自動執(zhí)行對數(shù)據(jù)庫修改的語句。也稱主動規(guī)則或事件_條件_動作規(guī)則。 (1)事件:對數(shù)據(jù)庫的增刪改等操作。觸發(fā)器在這些事件發(fā)生時開始工作; (2)條件:觸發(fā)器根據(jù)條件是否成立,決定是否工作; (3)動作:由DBMS執(zhí)行的對數(shù)據(jù)庫的操作;,東華大學(xué)

41、數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,77,2、SQL3的觸發(fā)器實例,CREATE TRIGGER trig1 -() AFTER update of score on sc REFERENCING OLD AS OLDTUPLE -定義元組變量 NEW AS NEWTUPLE FOR EACH ROW -(STATEMENT) WHEN (OLDTUPLE.SCORENEWTUPLE.SCORE) UPDATE SC SET SCORE=OLDTUPLE.SCORE WHERE C#=NEWTUPLE.C#,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,78,3、觸發(fā)器結(jié)構(gòu)的組成,觸發(fā)器撤銷: DROP TRIG

42、GER trig1 sql server: CREATE TRIGGER trig1 ON sc FOR update AS,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,79,4.5 數(shù)據(jù)庫的安全性4.5.1 安全性問題,1、數(shù)據(jù)庫的安全性:保護數(shù)據(jù)庫,防止不合法的使用,以免數(shù)據(jù)的泄密、更改或破壞。 2、安全性級別 環(huán)境級:機房和設(shè)備的保護。 職員級:正確授予工作人員訪問數(shù)據(jù)庫的權(quán)限。,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,80,4.5.1 安全性問題,OS級:應(yīng)防止未經(jīng)授權(quán)的用戶從OS處著手訪問數(shù)據(jù)庫。 網(wǎng)絡(luò)級:由于大多數(shù)DBS都允許用戶通過網(wǎng)絡(luò)進行遠程訪問,因此網(wǎng)絡(luò)軟件內(nèi)部的安全性是很重要的。 DB

43、S級:DBS的職責(zé)是檢查用戶的身份是否合法及使用數(shù)據(jù)庫的權(quán)限是否正確。,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,81,4.5.1 安全性問題-權(quán)限,3、權(quán)限問題 (1)訪問數(shù)據(jù)的權(quán)限有4個: 讀權(quán)限:允許用戶讀數(shù)據(jù),但不能改數(shù)據(jù)。 插入權(quán)限:允許用戶插入新數(shù)據(jù),但不能改數(shù)據(jù)。 修改權(quán)限:允許用戶改數(shù)據(jù),但不能刪除數(shù)據(jù)。 刪除權(quán)限 :允許用戶刪除數(shù)據(jù)。,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,82,4.5.1 安全性問題-權(quán)限,(2)修改數(shù)據(jù)庫模式的權(quán)限也有4個: 索引(Index)權(quán)限:允許用戶創(chuàng)建和刪除索引。 資源(Resourse)權(quán)限:允許用戶創(chuàng)建新的關(guān)系。 修改(Alteration)權(quán)限:允

44、許用戶在關(guān)系結(jié)構(gòu)中加入或刪除屬性。 撤消(Drop)權(quán)限:允許用戶撤消關(guān)系。,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,83,4.5.2 SQL中的安全性機制,1、視圖:使系統(tǒng)具有數(shù)據(jù)安全性、邏輯獨立性、操作簡便性。使用戶只能使用視圖定義中的屬性。 2、權(quán)限 (1)用戶權(quán)限:SELECT、INSERT、DELETE、 UPDATE、REFERENCES、USAG (2)授權(quán)語句 GRANT ON TO WITH GRANT OPTION,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,84,4.5.2 SQL中的安全性機制,例:GRANT select,update(s#,c#) ON s TO wang WITH GRANT OPTION (3)回收語句 REVOKE ON FROM RESTRICT | CASCADE 例:REVOKE select ON s FROM wang CASCADE,東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,85,4.5.2 SQL中的安全性機制權(quán)限的授予和回收,權(quán)限轉(zhuǎn)授圖,一個用戶擁有權(quán)限的充分必要條件是在權(quán)限圖中從根結(jié)點到該用戶結(jié)點存在一條路經(jīng),東華大學(xué) 數(shù)學(xué)02 數(shù)據(jù)庫系統(tǒng)原理,86,4.5.2 SQL中的安全性機制SQL中的權(quán)限操作實例,GRANT SELECT,UPDAT

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論