




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第7章系統(tǒng)實現(xiàn)技術12/12/20221四川理工學院計科系第7章系統(tǒng)實現(xiàn)技術12/11/20221四川理工學院計科系本章重要概念系統(tǒng)目錄及其與DBMS各子系統(tǒng)的聯(lián)系。事務的定義,COMMIT和ROLLBACK的語義,事務的ACID性質,事務的狀態(tài)變遷圖。存儲器類型,穩(wěn)定存儲器的實現(xiàn),數據傳送過程?;謴偷亩x、基本原則和實現(xiàn)方法,故障類型,檢查點技術,REDO和UNDO操作,運行記錄優(yōu)先原則。
12/12/20222四川理工學院計科系本章重要概念系統(tǒng)目錄及其與DBMS各子系統(tǒng)的聯(lián)系。12/11本章重要概念(續(xù)1)并發(fā)操作帶來的三個問題,X鎖、PX協(xié)議、PXC協(xié)議,S鎖、PS協(xié)議、PSC協(xié)議,活鎖、餓死和死鎖,并發(fā)調度,串行調度,并發(fā)調度的可串行化,兩段封鎖法,SQL中事務的存取模式和隔離級別。完整性的定義,完整性子系統(tǒng)的功能,完整性規(guī)則的組成。SQL中的三大類完整性約束,SQL3中的觸發(fā)器技術。安全性的定義、級別,權限,SQL中安全性機制,幾種常用的安全性措施,自然環(huán)境的安全性。12/12/20223四川理工學院計科系本章重要概念(續(xù)1)并發(fā)操作帶來的三個問題,X鎖、PX協(xié)議、主要內容和學習要求7.1系統(tǒng)目錄(理解)7.2事務(綜合應用)7.3數據庫的恢復(理解)7.4數據庫的并發(fā)控制(了解)7.5并發(fā)事務的可串行化和可恢復性(了解)7.6數據庫的完整性(理解)7.7數據庫的安全性(理解)12/12/20224四川理工學院計科系主要內容和學習要求7.1系統(tǒng)目錄(理解)12/11/207.1系統(tǒng)目錄什么是系統(tǒng)目錄系統(tǒng)目錄的重要性系統(tǒng)目錄的內容元數據12/12/20225四川理工學院計科系7.1系統(tǒng)目錄什么是系統(tǒng)目錄12/11/20225四川理工7.1系統(tǒng)目錄(續(xù)1)7.1.1RDBMS系統(tǒng)目錄的存儲內容關系名,屬性名,屬性域(數據類型)各種約束,主鍵,輔助鍵,外鍵,空值/非空值視圖的外部級描述,存儲結構和索引的內部級描述安全性和授權規(guī)則數據完整性規(guī)則注意:這些數據都以表格的形式存在12/12/20226四川理工學院計科系7.1系統(tǒng)目錄(續(xù)1)7.1.1RDBMS系統(tǒng)目錄的存儲7.1系統(tǒng)目錄(續(xù)2)REL_AND_ATTR_CATALOGREL_NAMEATTR_NAMEATTR_TYPEMEMBER_OF_PKMEMBER_OF_FKFK_RELATION關系名屬性名屬性類型主鍵外鍵外鍵關系RELATION_KEYSREL_NAMEKEY_NUMBERMEMBER_ATTR(a)存儲鍵信息的目錄關系RELATION_INDEXESREL_NAMEINDEX_NAMEMEMBER_ATTRINDEX_TYPEATTR_NOASC_DESC(b)存儲索引信息的目錄關系VIEW_QUERIER
VIEW_ATTRIBUTESVIEW_NAMEQUERY
VIEW_NAMEATTR_NAMEATTR_NUM(c)存儲視圖信息的目錄關系某RDBMS的系統(tǒng)目錄內容12/12/20227四川理工學院計科系7.1系統(tǒng)目錄(續(xù)2)REL_AND_ATTR_CATAL7.1系統(tǒng)目錄(續(xù)3)屬性鍵視圖屬性視圖關系關系基本關系索引屬性名鍵類型d數據類型鍵編號關系名查詢索引類型屬性序號索引名屬性名K_AR_IR_FI_AK_IR_AR_KV_A外鍵7.1.2系統(tǒng)目錄的擴充ER圖12/12/20228四川理工學院計科系7.1系統(tǒng)目錄(續(xù)3)屬性鍵視圖屬性視圖關系關系基本關系索7.1系統(tǒng)目錄(續(xù)4)DML命令的外部級到概念級映象DDL編譯程序DML優(yōu)化程序DML編譯程序DML分析校驗程序DBMS處理和檢查三級模式兩級映象檢查查詢涉及的關系名屬性名等將查詢涉及的概念模式轉換成內模式,產生訪問計劃根據物理結構優(yōu)化查詢執(zhí)行方案將查詢中的視圖由外部級導到概念級映象處理和檢查權限授權和安全程序7.1.3系統(tǒng)目錄和DBMS各子系統(tǒng)的聯(lián)系12/12/20229四川理工學院計科系7.1系統(tǒng)目錄(續(xù)4)DML命令的外DDL編譯程序DML優(yōu)7.2事務(transaction)事務:構成單一邏輯工作單元的操作集合。事務以“BEGINTRANSACTION”始,以“COMMIT”或“ROLLBACK”終。事務的性質(ACID)原子性(Atomicity):事務是一個不可分割的工作單元
一致性(Consistency):即數據不因事務的執(zhí)行而被破壞
隔離性(Isolation):多個事務并發(fā)執(zhí)行時,系統(tǒng)應保證與這些事務先后單獨執(zhí)行時的結果一樣
持久性(Durability):一事務一旦完成全部操作后,它對數據庫的所有更新應永久地反映在數據庫中
12/12/202210四川理工學院計科系7.2事務(transaction)事務:構成單一邏輯工例子:事務及其性質問題:設銀行數據庫中有一轉賬事務T,從賬號A轉一筆款子($50)到賬號B。相應的事務:
T:read(A); A:=A–50; write(A); read(B); B:=B+50; write(B).T:BEGINTRANSACTION;read(A); A:=A–50;write(A);if(A<0)ROLLBACK;else{read(B); B:=B+50; write(B);
COMMIT;}7.2事務(續(xù)1)12/12/202211四川理工學院計科系例子:事務及其性質問題:設銀行數據庫中有一轉賬事務T,從賬號事務提交和事務撤銷事務的所有操作都完成了,則事務提交(COMMIT),否則事務撤銷(ROLLBACK)BEGINTRANSACTION標志事務開始執(zhí)行BEGINTRANSACTION和COMMIT或ROLLBACK一起保證了事務的ACID性質對數據庫訪問的兩個基本操作:讀和寫,但完成寫操作后,數據可能暫時放在內存中,而非直接寫進數據庫。7.2事務(續(xù)2)12/12/202212四川理工學院計科系事務提交和事務撤銷事務的所有操作都完成了,則事務提交(COM7.2.3事務的狀態(tài)變遷圖7.2事務(續(xù)3)活動狀態(tài)局部提交狀態(tài)失敗狀態(tài)提交狀態(tài)異常中止狀態(tài)read/write圖7.4事務的狀態(tài)變遷圖12/12/202213四川理工學院計科系7.2.3事務的狀態(tài)變遷圖7.2事務(續(xù)3)活動狀態(tài)局7.2.3事務的狀態(tài)變遷圖活動狀態(tài):事務開始執(zhí)行后,立即進入活動狀態(tài)(Active)局部提交狀態(tài):事務的最后一個語句執(zhí)行后,進入局部提交狀態(tài)(PartiallyCommitted)失敗狀態(tài):事務沒能到達最后一個語句就中止執(zhí)行,事務進入失敗狀態(tài)(failed)異常中止狀態(tài):對失敗狀態(tài)的處理進入異常中止狀態(tài)(Abort)提交狀態(tài):局部提交狀態(tài)的事務經檢查的執(zhí)行提交(COMMIT)操作,把對數據庫的的修改全部寫到磁盤上,事務成功結束,進入“提交”狀態(tài)7.2事務(續(xù)3)12/12/202214四川理工學院計科系7.2.3事務的狀態(tài)變遷圖活動狀態(tài):事務開始執(zhí)行后,立即進7.3數據庫的恢復可恢復性(Recovery):DBMS能把數據庫從被破壞、不正確的狀態(tài)恢復到最近一個正確的狀態(tài)的能力。7.3.1存儲器結構存儲器類型易失性存儲器(volatilestorage):如內存、cache非易失性存儲器(nonvolatilestorage):如磁盤、磁帶穩(wěn)定存儲器(stablestorage):“決不丟失”的理論概念。穩(wěn)定存儲器的實現(xiàn)數據備份:如軟件拷貝、磁盤鏡像、RAID、雙機容錯等
數據銀行:將數據寫到遠程計算機中12/12/202215四川理工學院計科系7.3數據庫的恢復可恢復性(Recovery):DBMS能數據訪問塊:存儲單位物理塊:磁盤中的塊緩沖塊:內存中的塊;所有的緩沖塊組成“磁盤緩沖區(qū)”塊操作:Input(A):數據從物理塊A傳送到內存的緩沖塊中。Output(B):數據從緩沖塊B傳送到磁盤中恰當的物理塊中B緩沖塊AB物理塊input(A)output(B)圖7.5塊操作7.3數據庫的恢復(續(xù)1)12/12/202216四川理工學院計科系數據訪問塊:存儲單位B緩沖塊AB物理塊input(A)out數據訪問write(X)xi包含x的塊Bx存在,read(X)事務系統(tǒng)開始請求read(X)事務工作區(qū)分配X磁盤緩沖區(qū)掃描內存磁盤包含x的塊Bx不存在,Input(B)7.3數據庫的恢復(續(xù)2)12/12/202217四川理工學院計科系數據訪問write(X)xi包含x的塊Bx存在,read(恢復和原子性的聯(lián)系銀行轉賬系統(tǒng)A=2000B=1000事務A=A-100B=B+100Output(A)Output(B)斷電或其他故障若沒有事務的原子性,則重新啟動事務時要么A因為再執(zhí)行一遍而為1800,要么B因從未執(zhí)行而保持原值7.3數據庫的恢復(續(xù)3)12/12/202218四川理工學院計科系恢復和原子性的聯(lián)系銀行轉賬系統(tǒng)事務Output(A)Outp7.3.2恢復的基本原則和實現(xiàn)方法
基本原則:“冗余”,即數據庫重復存儲具體實現(xiàn)方法:平時做好兩件事:轉儲和建立日志
周期性地對整個數據庫進行拷貝。
建立日志數據庫。記錄事務的開始、結束及數據每一次更新的值。一旦發(fā)生數據庫故障,分兩種情況進行處理
若數據庫已被破壞,則裝入last數據庫備份,利用日志庫執(zhí)行REDO。若數據庫未被破壞,但某些數據不可靠,則執(zhí)行UNDO。7.3數據庫的恢復(續(xù)4)12/12/202219四川理工學院計科系7.3.2恢復的基本原則和實現(xiàn)方法基本原則:“冗余”,即7.3.3故障類型和恢復方法事務故障的分類:可預期的事務故障:如存款余額透支等(用ROLLBACK)非預期事務故障:如運算溢出、數據錯誤、并發(fā)事務發(fā)生死鎖等(用UNDO)系統(tǒng)故障(軟故障)硬件故障、軟件錯誤或掉電等(對未完成事務執(zhí)行UNDO;對已提交但仍在緩沖區(qū)的事務執(zhí)行REDO)介質故障(硬故障)磁盤物理故障或遭受病毒破壞7.3數據庫的恢復(續(xù)5)12/12/202220四川理工學院計科系7.3.3故障類型和恢復方法事務故障的分類:7.3數據庫7.3.4檢查點方法檢查點方法的恢復算法按日志文件建立事務重做隊列和事務撤銷隊列對重做隊列中事務進行REDO處理,對撤消隊列中事務進行UNDO處理
運行記錄優(yōu)先原則:為了安全,運行記錄就先寫下來。時間-------------------------------------事務檢查點故障點檢查點T1T3T2T5T4事務T1不必恢復;事務T2和事務T4必須重做(REDO);T3和事務T5必須撤消(UNDO)
7.3數據庫的恢復(續(xù)6)12/12/202221四川理工學院計科系7.3.4檢查點方法檢查點方法的恢復算法時間-------7.3.6SQL對事務的支持無begintransactionCommitRollback游標7.3數據庫的恢復(續(xù)7)12/12/202222四川理工學院計科系7.3.6SQL對事務的支持無begintransact7.4數據庫的并發(fā)控制時間更新事務T1數據庫中A的值更新事務T2T0
100
t1FINDA
t2
FINDAt3A:=A-30
t4
A:=A*2t5UPDA
t6
70UPDAt7
200
圖7.10在時間t7丟失了事務T1的更新(FIND表示從DB中讀值,UPD表示把值寫回到DB)
7.4.1并發(fā)操作帶來的問題1---丟失更新返回12/12/202223四川理工學院計科系7.4數據庫的并發(fā)控制時間更新事務T1數據庫中A的值更新事7.4數據庫的并發(fā)控制(續(xù)1)時間更新事務T1數據庫中A的值讀事務T2t0
100
t1FINDA
t2A:=A-30
t3UPDA
t4
70FINDAt5*ROLLBACK*
t6
100
圖7.11事務T2在時間t4讀了未提交的A值(70)
時間更新事務T1數據庫中A的值更新事務T2t0
100
t1FINDA
t2A:=A-30
t3UPDA
t4
70FINDAt5
A:=A*2t6
UPDAt7
140
t8*ROLLBACK*
t9
100
圖7.12事務T2在時間t4讀了未提交的A值,并在時間t8丟失了自己的更新
2.讀臟數據問題12/12/202224四川理工學院計科系7.4數據庫的并發(fā)控制(續(xù)1)時間更新事務T1數據庫中A的并發(fā)操作帶來的問題3---錯誤求和時間讀事務T1數據庫中A、B、C的值更新事務T2t0
40,50,30
t1FINDA
t2SUM:=A
t3FINDB
t4SUM:=SUM+B
t5
FINDCt6
C:=C-10t7
UPDCt8
40,50,20FINDAt9
A:=A+10t10
UPDAt11
50,50,20COMMITt12FINDC
t13SUM:=SUM+C
事務T1進行了不一致的分析
12/12/202225四川理工學院計科系并發(fā)操作帶來的問題3---錯誤求和時間讀事務T1數據庫中A、7.4.2封鎖技術封鎖技術:封鎖是控制并發(fā)執(zhí)行的主要技術。通常在數據庫中每個數據項都有一個鎖。對可能應用于某數據項的操作而言,鎖描述了該數據項的狀態(tài)。其作用是使并發(fā)事務對數據庫中數據項的訪問能夠同步。封鎖技術中主要有兩種封鎖:排他型封鎖(eXclusiveLock)和共享鎖(SharedLock)7.4數據庫的并發(fā)控制(續(xù)3)12/12/202226四川理工學院計科系7.4.2封鎖技術封鎖技術:封鎖是控制并發(fā)執(zhí)行的主要技術。1.排他型封鎖(X鎖)定義:若事務T對某數據R實現(xiàn)了X鎖,則在T對數據R解除封鎖之前,不允許其他事務對該數據加任何類型的鎖。操作:封鎖操作:XFINDR解鎖操作:XRELEASERPX協(xié)議:欲更新R的事務必先執(zhí)行“XFINDR”操作以獲得對R的X鎖,才能讀或寫R;若未獲準X鎖,則該事務進入等待隊列,直到獲準X鎖方能繼續(xù)下去。
PXC協(xié)議:X鎖的解除應合并到事務結束(COMMIT或ROLLBACK)操作中7.4數據庫的并發(fā)控制(續(xù)4)12/12/202227四川理工學院計科系1.排他型封鎖(X鎖)定義:若事務T對某數據R實現(xiàn)了X鎖,2.共享型封鎖(S鎖)定義:事務T對某數據加S鎖后允許其他事務對該數據加S鎖,但在對其所有S鎖被解除前決不允許任何事務對該數據加X鎖。操作:封鎖操作:SFINDR升級和寫操作:UPDXR解鎖操作:SRELEASERPS協(xié)議:任何讀R的事務必先執(zhí)行“SFINDR”操作獲得對R的S鎖;當事務獲準對R的S鎖后,若需更新R必須用“UPDXR”操作把S鎖升級為X鎖,成功則可更新,否則這個事務進入等待隊列。
PSC協(xié)議:S鎖的解除應合并到事務的結束(COMMIT或ROLLBACK)操作中
7.4數據庫的并發(fā)控制(續(xù)5)12/12/202228四川理工學院計科系2.共享型封鎖(S鎖)定義:事務T對某數據加S鎖后允許其他例:使用X鎖封鎖解決數據丟失時間更新事務T1數據庫中A的值更新事務T2t0
100
t1XFINDA
t2
XFINDA(失?。?/p>
wait(等待)t3A:=A-30
waitt4
waitt5UPDA
waitt6
70waitt7COMMIT(包括解鎖)
waitt8
XFINDA(重做)t9
A:=A*2t10
UPDAt11
140COMMIT(包括解鎖)12/12/202229四川理工學院計科系例:使用X鎖封鎖解決數據丟失時間更新事務T1數據庫中A的值更例:使用S鎖封鎖解決數據丟失時間更新事務T1數據庫中A的值更新事務T2t0
100
t1SFINDA
t2
SFINDAt3A:=A-30
t4
A:=A*2t5UPDXA(失敗)
t6wait
UPDXA(失敗)t7wait
Waitt8wait
Wait12/12/202230四川理工學院計科系例:使用S鎖封鎖解決數據丟失時間更新事務T1數據庫中A的值更3.封鎖的相容矩陣注:①N=NO,不相容的請求Y=YES,相容的請求②X、S、-:分別表示X鎖,S鎖,無鎖③如果兩個封鎖是不相容的,則后提出封鎖的事務要等待。XS—
X
S
—
NNY
NYY
YYY
T2T1
7.4數據庫的并發(fā)控制(續(xù)6)12/12/202231四川理工學院計科系3.封鎖的相容矩陣注:XS—
7.4數據庫的并發(fā)控制(續(xù)7)4.封鎖的粒度封鎖對象的大小稱為封鎖的粒度(Granularity)
封鎖的對象
邏輯單元:屬性值、屬性值集合、元組、關系、索引項、整個索引、整個數據庫
物理單元:頁(數據頁或索引頁)、塊
封鎖粒度與系統(tǒng)并發(fā)度和并發(fā)開銷密切相關。粒度大,能被封鎖的對象就少,并發(fā)度就小,但系統(tǒng)的開銷也越?。环粗?,粒度越小,并發(fā)度越高,系統(tǒng)開銷越大。12/12/202232四川理工學院計科系7.4數據庫的并發(fā)控制(續(xù)7)4.封鎖的粒度12/11/7.4.3封鎖帶來的問題1---(活鎖)T1XFINDAT2XFINDAT3XFINDAAA已被封鎖,不成功,等待A剛被釋放,成功時間點A剛被T2釋放,成功……T1永遠等待活鎖!解決方法:先來先服務/提升優(yōu)先級某個事務可能永遠處于等待狀態(tài),得不到封鎖的機會12/12/202233四川理工學院計科系7.4.3封鎖帶來的問題1---(活鎖)T1T2T3AA已封鎖帶來的問題2---餓死事務序列A1A2A3A4A5…資源AT2T2永遠不能封鎖解決方法,改變授權方式:當事務T2中請對數據項A加S鎖時,授權加鎖的條件是:①不存在在數據項A上持有X鎖的其他事務;②不存在等待對數據項A加鎖且先于T2申請加鎖的事務
每一個事務均請求A的S鎖,成功后一段時間釋放請求A的X鎖 若事務序列中的每個事務都申請對某數據項加S鎖,且在授權加鎖后一小段時間內釋放封鎖,此時另有事務T2欲對該數據項加X鎖,則將永遠輪不上封鎖的機會。12/12/202234四川理工學院計科系封鎖帶來的問題2---餓死事務序列資源AT2T2永遠不解決方封鎖帶來的問題3---死鎖時間事務T1事務T2t0XFINDA
t1
XFINDBt2XFINDB
t3waitXFINDAt4waitwait死鎖若事務依賴圖有環(huán)則可能死鎖T1T2T3T4圖7.20事務的無環(huán)依賴圖T1T2T3T4圖7.21事務的有環(huán)依賴圖 兩個或以上的事務都處于等待狀態(tài),且每個事務都在等待另一個事務解除封鎖才能繼續(xù)下去,結果造成任何一個事務都無法繼續(xù)執(zhí)行。12/12/202235四川理工學院計科系封鎖帶來的問題3---死鎖時間事務T1事務T2t0XFIND7.4.4并發(fā)操作的調度事務的調度:事務的執(zhí)行次序稱為“調度”串行調度:如果多個事務依次執(zhí)行,則稱為事務的串行調度(SerialSchedule)并發(fā)調度:如果利用分時的方法,同時處理多個事務,則稱為事務的并發(fā)調度(ConcurrentSchedule)可串行化:如果一個并發(fā)調度的執(zhí)行結果與某一串行調度的執(zhí)行結果等價,那么這個并發(fā)調度稱為“可串行化的調度”,否則是不可串行化的調度(不可串行化的例子參見例7.3)12/12/202236四川理工學院計科系7.4.4并發(fā)操作的調度事務的調度:事務的執(zhí)行次序稱為“調7.4.4并發(fā)操作的調度兩段封鎖協(xié)議:在對任何一個數據進行讀寫操作之前,事務必須獲得對該數據的封鎖;在釋放一個封鎖之后,事務不再獲得任何其他封鎖遵守該協(xié)議的事務分為兩個階段:獲得封鎖階段,也稱為“擴展”階段;釋放封鎖階段,也稱為“收縮”階段兩段封鎖協(xié)議與可串行化調度的關系:若所有的事務都遵守“兩段封鎖協(xié)議”,則所有可能的并發(fā)調度都是可串行化的兩段式封鎖是可串行化的充分不必要條件12/12/202237四川理工學院計科系7.4.4并發(fā)操作的調度兩段封鎖協(xié)議:12/11/20227.4.5SQL中事務的存取模式1.事務的存取模式READONLY(只讀型):事務對數據庫的操作只能是讀操作。定義這個模式后,表示隨后的事務均是只讀型。
READWRITE(讀寫型):事務對數據庫的操作可讀/寫。程序開始時默認這種模式
這兩種模式可用下列SQL語句定義:
SETTRANSACTIONREADONLYSETTRANSACTIONREADWRITE
12/12/202238四川理工學院計科系7.4.5SQL中事務的存取模式1.事務的存取模式12/7.4.5SQL中事務的存取模式2.SQL中事務的隔離級別SERIALIZABLE(可串行化):允許事務并發(fā),但須保證并發(fā)可串行化,是默認級別。REPEATABLEREAD(可重復讀):只許事務讀已提交的數據,且兩次讀之間不許其他事務修改此數據。READCOMMITTED(讀提交數據):允許事務讀已提交的數據,但不要求“可重復讀”。READUNCOMMITTED(可以讀未提交數據):允許事務讀已提交或未提交的數據。12/12/202239四川理工學院計科系7.4.5SQL中事務的存取模式2.SQL中事務的隔離級7.6數據庫的完整性7.6.1完整性子系統(tǒng)和完整性規(guī)則數據庫的完整性:正確性、有效性和相容性完整性子系統(tǒng)的主要功能:監(jiān)督事務的執(zhí)行,并測試是否違反完整性規(guī)則
若有違反現(xiàn)象,則采取恰當的操作,譬如拒絕操作、報告違反情況、改正錯誤等方法來處理
完整性規(guī)則:什么時候使用規(guī)則進行檢查(稱為規(guī)則的“觸發(fā)條件”)
要檢查什么樣的錯誤(稱為“約束條件”或“謂詞”)
如果查出錯誤,應該怎么辦(稱為“ELSE子句”,即違反時要做的動作)12/12/202240四川理工學院計科系7.6數據庫的完整性7.6.1完整性子系統(tǒng)和完整性規(guī)則17.6數據庫的完整性(續(xù)1)7.6.2SQL中的完整性約束域約束
用“CREATEDOMAIN”語句定義新的域,并且還可出現(xiàn)CHECK子句
斷言若約束與多個關系或與聚合操作有關,則“斷言”(Assertions)為用戶提供完整性約束定義機制CREATASSERTION<斷言名>CHECK(<條件>)
DROPASSERTION<斷言名>
定義一個新的域COLOR,可用下列語句實現(xiàn):CREATEDOMAINCOLORCHAR(6)DEFAULTˊ???ˊCONSTRAINTV_COLORSCHECK(VALUEIN(‘Red’,‘Yellow’,‘Blue’,‘Green’,‘???’));每位教師開設的課程不能超過10門。CREATEASSERTIONASSE1CHECK(10>=ALL(SELECTCOUNT(C#)FROMCGROUPBYTNAME));12/12/202241四川理工學院計科系7.6數據庫的完整性(續(xù)1)7.6.2SQL中的完整性約7.6數據庫的完整性(續(xù)2)基本表的約束候選鍵的定義UNIQUE(〈列名序列〉)或PRIMARYKEY(〈列名序列〉)外鍵的定義FOREIGNKEY(〈列名序列〉)REFERENCES<參照表>[(<列名序列>)][ONDELETE<參照動作>][ONUPDATE<參照動作>]“檢查約束”的定義CHECK(〈條件表達式〉)
12/12/202242四川理工學院計科系7.6數據庫的完整性(續(xù)2)基本表的約束12/11/202關于外鍵約束完整性的補充刪除參照表中元組時的考慮NOACTIONCASCADE方式
RESTRICT方式
SETNULL方式
SETDEFAULT方式修改參照表中主鍵值時的考慮、NOACTIONCASCADE方式
RESTRICT方式
SETNULL方式
SETDEFAULT方式
12/12/202243四川理工學院計科系關于外鍵約束完整性的補充刪除參照表中元組時的考慮修改參照表中關于數據庫完整性的例子學生關系S(S#,SNAME,AGE,SEX,SDEPT)選課關系SC(S#,C#,GRADE)課程關系C(C#,CNAME,CDEPT,TNAME)
在教學數據庫中,要求S中的元組滿足條件:男生年齡在15~35歲之間,女生年齡在15~30歲之間。對應的語句為:CHECK(AGE>=15AND((SEX=ˊ男ˊANDAGE<=35)OR(SEX=ˊ女ˊANDAGE<=30)));
CREATETABLESC(S#CHAR(4),C#CHAR4),GRADESMALLINT,PRIMARYKEY(SNO,NO),CHECK(S#IN(SELECTS#FROMS)),CHECK(C#IN(SELECTC#FROMC)))
①在SC中插入一個元組,若C#值在C中不存在,則系統(tǒng)將拒絕這個插入操作。②在SC中插入一個元組,若S#值在S中不存在,則系統(tǒng)將拒絕這個插入操作。③在S中刪除一個元組,這個操作將與關系SC中的檢查子句無關。若此時SC中存在被刪學生的選課元組時,SC將違反檢查子句中條件。12/12/202244四川理工學院計科系關于數據庫完整性的例子學生關系S(S#,SNAME,AGE,7.6.3SQL3的觸發(fā)器觸發(fā)器:一個能由系統(tǒng)自動執(zhí)行對數據庫修改的語句。組成:事件:插入、刪除、修改等操作,引發(fā)觸發(fā)器的操作條件:引發(fā)觸發(fā)器的條件動作:引發(fā)觸發(fā)器后的工作觸發(fā)器的命名動作時間 觸發(fā)事件 目標表名舊值和新值的別名表 動作間隔尺寸觸發(fā)動作 動作時間條件 動作體7.6數據庫的完整性(續(xù))12/12/202245四川理工學院計科系7.6.3SQL3的觸發(fā)器觸發(fā)器的命名7.6數據庫的完整SQL3的觸發(fā)器實例例7.26:應用于選課表SC的一個觸發(fā)器。該觸發(fā)器規(guī)定,在修改關系SC的成績值時,要求修改后的成績一定不能比原來的低,否則就拒絕修改。
CREATETRIGGERTRIG1 AFTERUPDATEOFGRADEONSC REFERENCING OLDASOLDTUPLENEWASNEWTUPLE FOREACHROW WHEN(OLDTUPLE.GRADE>NEWTUPLE.GRADE) UPDATESC SETGRADE=OLDTUPLE.GRADE WHEREC#=NEWTUPLE.C#
12/12/202246四川理工學院計科系SQL3的觸發(fā)器實例例7.26:應用于選課表SC的一個觸發(fā)7.7數據庫的安全性7.7.1安全性問題數據庫的安全性是指保護數據庫,防止不合法的使用以免數據的泄密、更改或破壞。安全性級別環(huán)境級:機房和設備應防止人為物理破壞。職員級:正確授予用戶訪問數據庫的權限。OS級:應防止未經授權的用戶從OS處著手訪問數據庫。網絡級:網絡軟件內部的安全。DBS級:DBS的職責是檢查用戶的身份是否合法及使用數據庫的權限是否正確。12/12/202247四川理工學院計科系7.7數據庫的安全性7.7.1安全性問題12/11/20(1)讀權限:允許用戶讀、但不能改數據。⑵插入權限:允許用戶插入新數據,但不能改數據。⑶修改權限:允許用戶改但不能刪數據。⑷刪除權限7.7.2權限問題訪問數據的權限索引(Index)權限:允許用戶創(chuàng)建和刪除索引。資源(Resourse)權限:允許用戶創(chuàng)建新的關系。修改(Alteration)權限:允許用戶在關系結構中加入或刪除屬性。撤消(Drop)權限:允許用戶撤消關系。7.7數據庫的安全性(續(xù))12/12/202248四川理工學院計科系(1)讀權限:允許用戶讀、但不能改數據。7.7.2權限問題DBAU1U2U3權限的授予和回收DBAU1U4U2U5U3權限轉授圖一個用戶擁有權限的充分必要條件是在權限圖中從根結點到該用戶結點存在一條路經
DBAU1U2U3DBAU1U2U3DBAU1U2U37.7數據庫的安全性(續(xù))權限圖的演變12/12/202249四川理工學院計科系DBAU1U2U3權限的授予和回收DBAU1U4U2U5U37.7.3SQL中的安全性機制視圖:虛表SQL2中的用戶權限及其操作用戶權限:SELECTINSERTDELETEUPDATEREFERENCESUSAG(ALLPRIVILEGES)授權語句GRANT<權限表>ON<數據庫元素>TO<用戶名表>[WITHGRANTOPTION]回收語句REVOKE<權限表>ON<數據庫元素>FROM<用戶名表>[RESTRICT|CASCADE]7.7數據庫的安全性(續(xù))12/12/202250四川理工學院計科系7.7.3SQL中的安全性機制7.7數據庫的安全性(續(xù))SQL中的權限操作實例GRANTSELECT,UPDATEONSTOWANGWITHGRANTOPTIONGRANTINSERT(S#,C#)ONSCTOLOUWITHGRANTOPTIONGRANTREFERENCES(CNO)ONCTOBAOWITHGRANTOPTIONGRANTUSAGEONDOMAINAGETOCHENREVOKESELECT,UPDATEONSFROMWANGCASCADEREVOKEGRANTOPTIONFORREFERENCES(C#)ONCFROMBAO12/12/202251四川理工學院計科系SQL中的權限操作實例GRANTSELECT,UPDAT7.7.4常用的安全性措施密級:絕密>機密>秘密>公用強制存取控制用戶i只能查看比它級別低或同級的數據;用戶i只能修改和它同級的數據統(tǒng)計數據庫的安全性一個查詢查到的記錄個數至少是n;兩個查詢查到的記錄的“交”數目至多是m數據加密法普通加密法明鍵加密法自然環(huán)境的安全性7.7數據庫的安全性(續(xù))12/12/202252四川理工學院計科系7.7.4常用的安全性措施7.7數據庫的安全性(續(xù))12主要內容7.1系統(tǒng)目錄
7.2事務7.3數據庫的恢復7.4數據庫的并發(fā)控制7.5并發(fā)事務的可串行化和可恢復性7.6數據庫的完整性7.7數據庫的安全性小結12/12/202253四川理工學院計科系主要內容7.1系統(tǒng)目錄12/11/202253四川理工學小結事務以及事務的四個性質數據庫數據的恢復原理、常用技術、故障類型和恢復方法檢查點技術封鎖操作以及封鎖帶來的問題并發(fā)操作和可串行化數據庫的完整性以及SQL中相應的語句12/12/202254四川理工學院計科系小結事務以及事務的四個性質12/11/202254四川理工學本章的重點篇幅
(1)教材中P261
的圖7.7。(檢查點技術)(2)并發(fā)操作帶來的四個問題,封鎖帶來的三個問題,并發(fā)調度的可串行化。(教材P265-276)(3)SQL中完整性約束的實現(xiàn):斷言(教材P290)。(4)安全性中的授權語句(教材P298)。
12/12/202255四川理工學院計科系本章的重點篇幅(1)教材中P261 的圖7.7。(檢查點技第7章系統(tǒng)實現(xiàn)技術12/12/202256四川理工學院計科系第7章系統(tǒng)實現(xiàn)技術12/11/20221四川理工學院計科系本章重要概念系統(tǒng)目錄及其與DBMS各子系統(tǒng)的聯(lián)系。事務的定義,COMMIT和ROLLBACK的語義,事務的ACID性質,事務的狀態(tài)變遷圖。存儲器類型,穩(wěn)定存儲器的實現(xiàn),數據傳送過程?;謴偷亩x、基本原則和實現(xiàn)方法,故障類型,檢查點技術,REDO和UNDO操作,運行記錄優(yōu)先原則。
12/12/202257四川理工學院計科系本章重要概念系統(tǒng)目錄及其與DBMS各子系統(tǒng)的聯(lián)系。12/11本章重要概念(續(xù)1)并發(fā)操作帶來的三個問題,X鎖、PX協(xié)議、PXC協(xié)議,S鎖、PS協(xié)議、PSC協(xié)議,活鎖、餓死和死鎖,并發(fā)調度,串行調度,并發(fā)調度的可串行化,兩段封鎖法,SQL中事務的存取模式和隔離級別。完整性的定義,完整性子系統(tǒng)的功能,完整性規(guī)則的組成。SQL中的三大類完整性約束,SQL3中的觸發(fā)器技術。安全性的定義、級別,權限,SQL中安全性機制,幾種常用的安全性措施,自然環(huán)境的安全性。12/12/202258四川理工學院計科系本章重要概念(續(xù)1)并發(fā)操作帶來的三個問題,X鎖、PX協(xié)議、主要內容和學習要求7.1系統(tǒng)目錄(理解)7.2事務(綜合應用)7.3數據庫的恢復(理解)7.4數據庫的并發(fā)控制(了解)7.5并發(fā)事務的可串行化和可恢復性(了解)7.6數據庫的完整性(理解)7.7數據庫的安全性(理解)12/12/202259四川理工學院計科系主要內容和學習要求7.1系統(tǒng)目錄(理解)12/11/207.1系統(tǒng)目錄什么是系統(tǒng)目錄系統(tǒng)目錄的重要性系統(tǒng)目錄的內容元數據12/12/202260四川理工學院計科系7.1系統(tǒng)目錄什么是系統(tǒng)目錄12/11/20225四川理工7.1系統(tǒng)目錄(續(xù)1)7.1.1RDBMS系統(tǒng)目錄的存儲內容關系名,屬性名,屬性域(數據類型)各種約束,主鍵,輔助鍵,外鍵,空值/非空值視圖的外部級描述,存儲結構和索引的內部級描述安全性和授權規(guī)則數據完整性規(guī)則注意:這些數據都以表格的形式存在12/12/202261四川理工學院計科系7.1系統(tǒng)目錄(續(xù)1)7.1.1RDBMS系統(tǒng)目錄的存儲7.1系統(tǒng)目錄(續(xù)2)REL_AND_ATTR_CATALOGREL_NAMEATTR_NAMEATTR_TYPEMEMBER_OF_PKMEMBER_OF_FKFK_RELATION關系名屬性名屬性類型主鍵外鍵外鍵關系RELATION_KEYSREL_NAMEKEY_NUMBERMEMBER_ATTR(a)存儲鍵信息的目錄關系RELATION_INDEXESREL_NAMEINDEX_NAMEMEMBER_ATTRINDEX_TYPEATTR_NOASC_DESC(b)存儲索引信息的目錄關系VIEW_QUERIER
VIEW_ATTRIBUTESVIEW_NAMEQUERY
VIEW_NAMEATTR_NAMEATTR_NUM(c)存儲視圖信息的目錄關系某RDBMS的系統(tǒng)目錄內容12/12/202262四川理工學院計科系7.1系統(tǒng)目錄(續(xù)2)REL_AND_ATTR_CATAL7.1系統(tǒng)目錄(續(xù)3)屬性鍵視圖屬性視圖關系關系基本關系索引屬性名鍵類型d數據類型鍵編號關系名查詢索引類型屬性序號索引名屬性名K_AR_IR_FI_AK_IR_AR_KV_A外鍵7.1.2系統(tǒng)目錄的擴充ER圖12/12/202263四川理工學院計科系7.1系統(tǒng)目錄(續(xù)3)屬性鍵視圖屬性視圖關系關系基本關系索7.1系統(tǒng)目錄(續(xù)4)DML命令的外部級到概念級映象DDL編譯程序DML優(yōu)化程序DML編譯程序DML分析校驗程序DBMS處理和檢查三級模式兩級映象檢查查詢涉及的關系名屬性名等將查詢涉及的概念模式轉換成內模式,產生訪問計劃根據物理結構優(yōu)化查詢執(zhí)行方案將查詢中的視圖由外部級導到概念級映象處理和檢查權限授權和安全程序7.1.3系統(tǒng)目錄和DBMS各子系統(tǒng)的聯(lián)系12/12/202264四川理工學院計科系7.1系統(tǒng)目錄(續(xù)4)DML命令的外DDL編譯程序DML優(yōu)7.2事務(transaction)事務:構成單一邏輯工作單元的操作集合。事務以“BEGINTRANSACTION”始,以“COMMIT”或“ROLLBACK”終。事務的性質(ACID)原子性(Atomicity):事務是一個不可分割的工作單元
一致性(Consistency):即數據不因事務的執(zhí)行而被破壞
隔離性(Isolation):多個事務并發(fā)執(zhí)行時,系統(tǒng)應保證與這些事務先后單獨執(zhí)行時的結果一樣
持久性(Durability):一事務一旦完成全部操作后,它對數據庫的所有更新應永久地反映在數據庫中
12/12/202265四川理工學院計科系7.2事務(transaction)事務:構成單一邏輯工例子:事務及其性質問題:設銀行數據庫中有一轉賬事務T,從賬號A轉一筆款子($50)到賬號B。相應的事務:
T:read(A); A:=A–50; write(A); read(B); B:=B+50; write(B).T:BEGINTRANSACTION;read(A); A:=A–50;write(A);if(A<0)ROLLBACK;else{read(B); B:=B+50; write(B);
COMMIT;}7.2事務(續(xù)1)12/12/202266四川理工學院計科系例子:事務及其性質問題:設銀行數據庫中有一轉賬事務T,從賬號事務提交和事務撤銷事務的所有操作都完成了,則事務提交(COMMIT),否則事務撤銷(ROLLBACK)BEGINTRANSACTION標志事務開始執(zhí)行BEGINTRANSACTION和COMMIT或ROLLBACK一起保證了事務的ACID性質對數據庫訪問的兩個基本操作:讀和寫,但完成寫操作后,數據可能暫時放在內存中,而非直接寫進數據庫。7.2事務(續(xù)2)12/12/202267四川理工學院計科系事務提交和事務撤銷事務的所有操作都完成了,則事務提交(COM7.2.3事務的狀態(tài)變遷圖7.2事務(續(xù)3)活動狀態(tài)局部提交狀態(tài)失敗狀態(tài)提交狀態(tài)異常中止狀態(tài)read/write圖7.4事務的狀態(tài)變遷圖12/12/202268四川理工學院計科系7.2.3事務的狀態(tài)變遷圖7.2事務(續(xù)3)活動狀態(tài)局7.2.3事務的狀態(tài)變遷圖活動狀態(tài):事務開始執(zhí)行后,立即進入活動狀態(tài)(Active)局部提交狀態(tài):事務的最后一個語句執(zhí)行后,進入局部提交狀態(tài)(PartiallyCommitted)失敗狀態(tài):事務沒能到達最后一個語句就中止執(zhí)行,事務進入失敗狀態(tài)(failed)異常中止狀態(tài):對失敗狀態(tài)的處理進入異常中止狀態(tài)(Abort)提交狀態(tài):局部提交狀態(tài)的事務經檢查的執(zhí)行提交(COMMIT)操作,把對數據庫的的修改全部寫到磁盤上,事務成功結束,進入“提交”狀態(tài)7.2事務(續(xù)3)12/12/202269四川理工學院計科系7.2.3事務的狀態(tài)變遷圖活動狀態(tài):事務開始執(zhí)行后,立即進7.3數據庫的恢復可恢復性(Recovery):DBMS能把數據庫從被破壞、不正確的狀態(tài)恢復到最近一個正確的狀態(tài)的能力。7.3.1存儲器結構存儲器類型易失性存儲器(volatilestorage):如內存、cache非易失性存儲器(nonvolatilestorage):如磁盤、磁帶穩(wěn)定存儲器(stablestorage):“決不丟失”的理論概念。穩(wěn)定存儲器的實現(xiàn)數據備份:如軟件拷貝、磁盤鏡像、RAID、雙機容錯等
數據銀行:將數據寫到遠程計算機中12/12/202270四川理工學院計科系7.3數據庫的恢復可恢復性(Recovery):DBMS能數據訪問塊:存儲單位物理塊:磁盤中的塊緩沖塊:內存中的塊;所有的緩沖塊組成“磁盤緩沖區(qū)”塊操作:Input(A):數據從物理塊A傳送到內存的緩沖塊中。Output(B):數據從緩沖塊B傳送到磁盤中恰當的物理塊中B緩沖塊AB物理塊input(A)output(B)圖7.5塊操作7.3數據庫的恢復(續(xù)1)12/12/202271四川理工學院計科系數據訪問塊:存儲單位B緩沖塊AB物理塊input(A)out數據訪問write(X)xi包含x的塊Bx存在,read(X)事務系統(tǒng)開始請求read(X)事務工作區(qū)分配X磁盤緩沖區(qū)掃描內存磁盤包含x的塊Bx不存在,Input(B)7.3數據庫的恢復(續(xù)2)12/12/202272四川理工學院計科系數據訪問write(X)xi包含x的塊Bx存在,read(恢復和原子性的聯(lián)系銀行轉賬系統(tǒng)A=2000B=1000事務A=A-100B=B+100Output(A)Output(B)斷電或其他故障若沒有事務的原子性,則重新啟動事務時要么A因為再執(zhí)行一遍而為1800,要么B因從未執(zhí)行而保持原值7.3數據庫的恢復(續(xù)3)12/12/202273四川理工學院計科系恢復和原子性的聯(lián)系銀行轉賬系統(tǒng)事務Output(A)Outp7.3.2恢復的基本原則和實現(xiàn)方法
基本原則:“冗余”,即數據庫重復存儲具體實現(xiàn)方法:平時做好兩件事:轉儲和建立日志
周期性地對整個數據庫進行拷貝。
建立日志數據庫。記錄事務的開始、結束及數據每一次更新的值。一旦發(fā)生數據庫故障,分兩種情況進行處理
若數據庫已被破壞,則裝入last數據庫備份,利用日志庫執(zhí)行REDO。若數據庫未被破壞,但某些數據不可靠,則執(zhí)行UNDO。7.3數據庫的恢復(續(xù)4)12/12/202274四川理工學院計科系7.3.2恢復的基本原則和實現(xiàn)方法基本原則:“冗余”,即7.3.3故障類型和恢復方法事務故障的分類:可預期的事務故障:如存款余額透支等(用ROLLBACK)非預期事務故障:如運算溢出、數據錯誤、并發(fā)事務發(fā)生死鎖等(用UNDO)系統(tǒng)故障(軟故障)硬件故障、軟件錯誤或掉電等(對未完成事務執(zhí)行UNDO;對已提交但仍在緩沖區(qū)的事務執(zhí)行REDO)介質故障(硬故障)磁盤物理故障或遭受病毒破壞7.3數據庫的恢復(續(xù)5)12/12/202275四川理工學院計科系7.3.3故障類型和恢復方法事務故障的分類:7.3數據庫7.3.4檢查點方法檢查點方法的恢復算法按日志文件建立事務重做隊列和事務撤銷隊列對重做隊列中事務進行REDO處理,對撤消隊列中事務進行UNDO處理
運行記錄優(yōu)先原則:為了安全,運行記錄就先寫下來。時間-------------------------------------事務檢查點故障點檢查點T1T3T2T5T4事務T1不必恢復;事務T2和事務T4必須重做(REDO);T3和事務T5必須撤消(UNDO)
7.3數據庫的恢復(續(xù)6)12/12/202276四川理工學院計科系7.3.4檢查點方法檢查點方法的恢復算法時間-------7.3.6SQL對事務的支持無begintransactionCommitRollback游標7.3數據庫的恢復(續(xù)7)12/12/202277四川理工學院計科系7.3.6SQL對事務的支持無begintransact7.4數據庫的并發(fā)控制時間更新事務T1數據庫中A的值更新事務T2T0
100
t1FINDA
t2
FINDAt3A:=A-30
t4
A:=A*2t5UPDA
t6
70UPDAt7
200
圖7.10在時間t7丟失了事務T1的更新(FIND表示從DB中讀值,UPD表示把值寫回到DB)
7.4.1并發(fā)操作帶來的問題1---丟失更新返回12/12/202278四川理工學院計科系7.4數據庫的并發(fā)控制時間更新事務T1數據庫中A的值更新事7.4數據庫的并發(fā)控制(續(xù)1)時間更新事務T1數據庫中A的值讀事務T2t0
100
t1FINDA
t2A:=A-30
t3UPDA
t4
70FINDAt5*ROLLBACK*
t6
100
圖7.11事務T2在時間t4讀了未提交的A值(70)
時間更新事務T1數據庫中A的值更新事務T2t0
100
t1FINDA
t2A:=A-30
t3UPDA
t4
70FINDAt5
A:=A*2t6
UPDAt7
140
t8*ROLLBACK*
t9
100
圖7.12事務T2在時間t4讀了未提交的A值,并在時間t8丟失了自己的更新
2.讀臟數據問題12/12/202279四川理工學院計科系7.4數據庫的并發(fā)控制(續(xù)1)時間更新事務T1數據庫中A的并發(fā)操作帶來的問題3---錯誤求和時間讀事務T1數據庫中A、B、C的值更新事務T2t0
40,50,30
t1FINDA
t2SUM:=A
t3FINDB
t4SUM:=SUM+B
t5
FINDCt6
C:=C-10t7
UPDCt8
40,50,20FINDAt9
A:=A+10t10
UPDAt11
50,50,20COMMITt12FINDC
t13SUM:=SUM+C
事務T1進行了不一致的分析
12/12/202280四川理工學院計科系并發(fā)操作帶來的問題3---錯誤求和時間讀事務T1數據庫中A、7.4.2封鎖技術封鎖技術:封鎖是控制并發(fā)執(zhí)行的主要技術。通常在數據庫中每個數據項都有一個鎖。對可能應用于某數據項的操作而言,鎖描述了該數據項的狀態(tài)。其作用是使并發(fā)事務對數據庫中數據項的訪問能夠同步。封鎖技術中主要有兩種封鎖:排他型封鎖(eXclusiveLock)和共享鎖(SharedLock)7.4數據庫的并發(fā)控制(續(xù)3)12/12/202281四川理工學院計科系7.4.2封鎖技術封鎖技術:封鎖是控制并發(fā)執(zhí)行的主要技術。1.排他型封鎖(X鎖)定義:若事務T對某數據R實現(xiàn)了X鎖,則在T對數據R解除封鎖之前,不允許其他事務對該數據加任何類型的鎖。操作:封鎖操作:XFINDR解鎖操作:XRELEASERPX協(xié)議:欲更新R的事務必先執(zhí)行“XFINDR”操作以獲得對R的X鎖,才能讀或寫R;若未獲準X鎖,則該事務進入等待隊列,直到獲準X鎖方能繼續(xù)下去。
PXC協(xié)議:X鎖的解除應合并到事務結束(COMMIT或ROLLBACK)操作中7.4數據庫的并發(fā)控制(續(xù)4)12/12/202282四川理工學院計科系1.排他型封鎖(X鎖)定義:若事務T對某數據R實現(xiàn)了X鎖,2.共享型封鎖(S鎖)定義:事務T對某數據加S鎖后允許其他事務對該數據加S鎖,但在對其所有S鎖被解除前決不允許任何事務對該數據加X鎖。操作:封鎖操作:SFINDR升級和寫操作:UPDXR解鎖操作:SRELEASERPS協(xié)議:任何讀R的事務必先執(zhí)行“SFINDR”操作獲得對R的S鎖;當事務獲準對R的S鎖后,若需更新R必須用“UPDXR”操作把S鎖升級為X鎖,成功則可更新,否則這個事務進入等待隊列。
PSC協(xié)議:S鎖的解除應合并到事務的結束(COMMIT或ROLLBACK)操作中
7.4數據庫的并發(fā)控制(續(xù)5)12/12/202283四川理工學院計科系2.共享型封鎖(S鎖)定義:事務T對某數據加S鎖后允許其他例:使用X鎖封鎖解決數據丟失時間更新事務T1數據庫中A的值更新事務T2t0
100
t1XFINDA
t2
XFINDA(失?。?/p>
wait(等待)t3A:=A-30
waitt4
waitt5UPDA
waitt6
70waitt7COMMIT(包括解鎖)
waitt8
XFINDA(重做)t9
A:=A*2t10
UPDAt11
140COMMIT(包括解鎖)12/12/202284四川理工學院計科系例:使用X鎖封鎖解決數據丟失時間更新事務T1數據庫中A的值更例:使用S鎖封鎖解決數據丟失時間更新事務T1數據庫中A的值更新事務T2t0
100
t1SFINDA
t2
SFINDAt3A:=A-30
t4
A:=A*2t5UPDXA(失?。?/p>
t6wait
UPDXA(失?。﹖7wait
Waitt8wait
Wait12/12/202285四川理工學院計科系例:使用S鎖封鎖解決數據丟失時間更新事務T1數據庫中A的值更3.封鎖的相容矩陣注:①N=NO,不相容的請求Y=YES,相容的請求②X、S、-:分別表示X鎖,S鎖,無鎖③如果兩個封鎖是不相容的,則后提出封鎖的事務要等待。XS—
X
S
—
NNY
NYY
YYY
T2T1
7.4數據庫的并發(fā)控制(續(xù)6)12/12/202286四川理工學院計科系3.封鎖的相容矩陣注:XS—
7.4數據庫的并發(fā)控制(續(xù)7)4.封鎖的粒度封鎖對象的大小稱為封鎖的粒度(Granularity)
封鎖的對象
邏輯單元:屬性值、屬性值集合、元組、關系、索引項、整個索引、整個數據庫
物理單元:頁(數據頁或索引頁)、塊
封鎖粒度與系統(tǒng)并發(fā)度和并發(fā)開銷密切相關。粒度大,能被封鎖的對象就少,并發(fā)度就小,但系統(tǒng)的開銷也越??;反之,粒度越小,并發(fā)度越高,系統(tǒng)開銷越大。12/12/202287四川理工學院計科系7.4數據庫的并發(fā)控制(續(xù)7)4.封鎖的粒度12/11/7.4.3封鎖帶來的問題1---(活鎖)T1XFINDAT2XFINDAT3XFINDAAA已被封鎖,不成功,等待A剛被釋放,成功時間點A剛被T2釋放,成功……T1永遠等待活鎖!解決方法:先來先服務/提升優(yōu)先級某個事務可能永遠處于等待狀態(tài),得不到封鎖的機會12/12/202288四川理工學院計科系7.4.3封鎖帶來的問題1---(活鎖)T1T2T3AA已封鎖帶來的問題2---餓死事務序列A1A2A3A4A5…資源AT2T2永遠不能封鎖解決方法,改變授權方式:當事務T2中請對數據項A加S鎖時,授權加鎖的條件是:①不存在在數據項A上持有X鎖的其他事務;②不存在等待對數據項A加鎖且先于T2申請加鎖的事務
每一個事務均請求A的S鎖,成功后一段時間釋放請求A的X鎖 若事務序列中的每個事務都申請對某數據項加S鎖,且在授權加鎖后一小段時間內釋放封鎖,此時另有事務T2欲對該數據項加X鎖,則將永遠輪不上封鎖的機會。12/12/202289四川理工學院計科系封鎖帶來的問題2---餓死事務序列資源AT2T2永遠不解決方封鎖帶來的問題3---死鎖時間事務T1事務T2t0XFINDA
t1
XFINDBt2XFINDB
t3waitXFINDAt4waitwait死鎖若事務依賴圖有環(huán)則可能死鎖T1T2T3T4圖7.20事務的無環(huán)依賴圖T1T2T3T4圖7.21事務的有環(huán)依賴圖 兩個或以上的事務都處于等待狀態(tài),且每個事務都在等待另一個事務解除封鎖才能繼續(xù)下去,結果造成任何一個事務都無法繼續(xù)執(zhí)行。12/12/202290四川理工學院計科系封鎖帶來的問題3---死鎖時間事務T1事務T2t0XFIND7.4.4并發(fā)操作的調度事務的調度:事務的執(zhí)行次序稱為“調度”串行調度:如果多個事務依次執(zhí)行,則稱為事務的串行調度(SerialSchedule)并發(fā)調度:如果利用分時的方法,同時處理多個事務,則稱為事務的并發(fā)調度(ConcurrentSchedule)可串行化:如果一個并發(fā)調度的執(zhí)行結果與某一串行調度的執(zhí)行結果等價,那么這個并發(fā)調度稱為“可串行化的調度”,否則是不可串行化的調度(不可串行化的例子參見例7.3)12/12/202291四川理工學院計科系7.4.4并發(fā)操作的調度事務的調度:事務的執(zhí)行次序稱為“調7.4.4并發(fā)操作的調度兩段封鎖協(xié)議:在對任何一個數據進行讀寫操作之前,事務必須獲得對該數據的封鎖;在釋放一個封鎖之后,事務不再獲得任何其他封鎖遵守該協(xié)議的事務分為兩個階段:獲得封鎖階段,也稱為“擴展”階段;釋放封鎖階段,也稱為“收縮”階段兩段封鎖協(xié)議與可串行化調度的關系:若所有的事務都遵守“兩段封鎖協(xié)議”,則所有可能的并發(fā)調度都是可串行化的兩段式封鎖是可串行化的充分不必要條件12/12/202292四川理工學院計科系7.4.4并發(fā)操作的調度兩段封鎖協(xié)議:12/11/20227.4.5SQL中事務的存取模式1.事務的存取模式READONLY(只讀型):事務對數據庫的操作只能是讀操作。定義這個模式后,表示隨后的事務均是只讀型。
READWRITE(讀寫型):事務對數據庫的操作可讀/寫。程序開始時默認這種模式
這兩種模式可用下列SQL語句定義:
SETTRANSACTIONREADONLYSETTRANSACTIONREADWRITE
12/12/202293四川理工學院計科系7.4.5SQL中事務的存取模式1.事務的存取模式12/7.4.5SQL中事務的存取模式2.SQL中事務的隔離級別SERIALIZABLE(可串行化):允許事務并發(fā),但須保證并發(fā)可串行化,是默認級別。REPEATABLEREAD(可重復讀):只許事務讀已提交的數據,且兩次讀之間不許其他事務修改此數據。READCOMMITTED(讀提交數據):允許事務讀已提交的數據,但不要求“可重復讀”。READUNCOMMITTED(可以讀未提交數據):允許事務讀已提交或未提交的數據。12/12/202294四川理工學院計科系7.4.5SQL中事務的存取模式2.SQL中事務的隔離級7.6數據庫的完整性7.6.1完整性子系統(tǒng)和完整性規(guī)則數據庫的完整性:正確性、有效性和相容性完整性子系統(tǒng)的主要功能:監(jiān)督事務的執(zhí)行,并測試是否違反完整性規(guī)則
若有違反現(xiàn)象,則采取恰當的操作,譬如拒絕操作、報告違反情況、改正錯誤等方法來處理
完整性規(guī)則:什么時候使用規(guī)則進行檢查(稱為規(guī)則的“觸發(fā)條件”)
要檢查什么樣的錯誤(稱為“約束條件”或“謂詞”)
如果查出錯誤,應該怎么辦(稱為“ELSE子句”,即違反時要做的動作)12/12/202295四川理工學院計科系7.6數據庫的完整性7.6.1完整性子系統(tǒng)和完整性規(guī)則17.6數據庫的完整性(續(xù)1)7.6.2SQL中的完整性約束域約束
用“CREATEDOMAIN”語句定義新的域,并且還可出現(xiàn)CHECK子句
斷言若約束與多個關系或與聚合操作有關,則“斷言”(Assertions)為用戶提供完整性約束定義機制CREATASSERTION<斷言名>CHECK(<條件>)
DROPASSERTION<斷言名>
定義一個新的域COLOR,可用下列語句實現(xiàn):CREATEDOMAINCOLORCHAR(6)DEFAULTˊ???ˊCONSTRAINTV_COLORSCHECK(VALUEIN(‘Red’,‘Yellow’,‘Blue’,‘Green’,‘???’));每位教師開設的課程不能超過10門。CREATEASSERTIONASSE1CHECK(10>=ALL(SELECTCOUNT(C#)FROMCGROUPBYTNAME));12/12/202296四川理工學院計科系7.6數據庫的完整性(續(xù)1)7.6.2SQL中的完整性約7.6數據庫的完整性(續(xù)2)基本表的約束候選鍵的定義UNIQUE(〈列名序列〉)或PRIMARYKEY(〈列名序列〉)外鍵的定義FOREIGNKEY(〈列名序列〉)REFERENCES<參照表>[(<列名序列>)][ONDELETE<參照動作>][ONUPDATE<參照動作>]“檢查約束”的定義CHECK(〈條件表達式〉)
12/12/202297四川理工學院計科系7.6數據庫的完整性(續(xù)2)基本表的約束12/11/202關于外鍵約束完整性的補充刪除參照表中元組時的考慮NOACTIONCASCADE方式
RESTRICT方式
SETNULL方式
SETDEFAULT方式修改參照表中主鍵值時的考慮、NOACTIONCASCADE方式
RESTRICT方式
SETNULL方式
SETDEFAULT方式
12/12/202298四川理工學院計科系關于外鍵約束完整性的補充刪除參照表中元組時的考慮修改參照表中關于數據庫完整性的例子學生關系S(S#,SNAME,AGE,SEX,SDEPT)選課關系SC(S#,C#,GRADE)課程關系C(C#,CNAME,CDEPT,TNAME)
在教學數據庫中,要求S中的元組滿足條件:男生年齡在15~35歲之間,女生年齡在15~30歲之間。對應的語句為:CHECK(AGE>=15AND((SEX=ˊ男ˊANDAGE<=35)OR(SEX=ˊ女ˊANDAGE<=30)));
CREATETABLESC(S#CHAR(4),C#CHAR4),GRADESMALLINT,PRIMARYKEY(SNO,NO),CHECK(S#IN(SELECTS#FROMS)),CHECK(C#IN(SELECTC#FROMC)))
①在SC中插入一個元組,若C#值在C中不存在,則系統(tǒng)將拒絕這個插入操作。②在SC中插入一個元組,若S#值在S中不存在,則系統(tǒng)將拒絕這個插入操
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 專項5 標點(解析版)
- 2025年初中教科版八年級上冊物理2.3測量物體運動的速度說課稿
- 2.2 聲音的特性 說課稿-2025年初中人教版八年級物理上冊
- 品牌戰(zhàn)略規(guī)劃作業(yè)指導書
- 電信行業(yè)網絡優(yōu)化及增值業(yè)務拓展方案
- 垃圾焚燒發(fā)電廠項目劃分
- 房地產開發(fā)項目可行性研究論文
- 股份制改革實施路徑研究
- 快遞行業(yè)長期物流合作協(xié)議
- 針對提高團隊協(xié)作效率的解決方案
- 《油氣儲存企業(yè)安全風險評估細則(2025年修訂版)》解讀與培訓
- 2025年安徽職業(yè)技術學院單招職業(yè)適應性測試題庫匯編
- 2025年內蒙古北方職業(yè)技術學院單招職業(yè)傾向性測試題庫完美版
- Deepseek 學習手冊分享
- 電網工程設備材料信息參考價(2024年第四季度)
- 《你當像鳥飛往你的山》讀書分享讀書分享筆記
- 2024年浙江省中考社會試卷真題(含標準答案及評分標準)
- 20以內退位減法口算練習題100題30套(共3000題)
- 4925095728國內外中小學作業(yè)研究綜述
- 外墻粉刷施工方案(完整版)
- 華為-原理圖繪制評審規(guī)范-checklist
評論
0/150
提交評論