數(shù)據(jù)庫系統(tǒng)教程DBS:第七章 系統(tǒng)實(shí)現(xiàn)技術(shù)_第1頁
數(shù)據(jù)庫系統(tǒng)教程DBS:第七章 系統(tǒng)實(shí)現(xiàn)技術(shù)_第2頁
數(shù)據(jù)庫系統(tǒng)教程DBS:第七章 系統(tǒng)實(shí)現(xiàn)技術(shù)_第3頁
數(shù)據(jù)庫系統(tǒng)教程DBS:第七章 系統(tǒng)實(shí)現(xiàn)技術(shù)_第4頁
數(shù)據(jù)庫系統(tǒng)教程DBS:第七章 系統(tǒng)實(shí)現(xiàn)技術(shù)_第5頁
已閱讀5頁,還剩111頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

7.1系統(tǒng)目錄7.2事務(wù)7.3數(shù)據(jù)庫的恢復(fù)7.4數(shù)據(jù)庫的并發(fā)控制7.5并發(fā)事務(wù)的可串行化和可恢復(fù)性(略)7.6數(shù)據(jù)庫的完整性7.7數(shù)據(jù)庫的安全性第七章系統(tǒng)實(shí)現(xiàn)技術(shù)第七章系統(tǒng)實(shí)現(xiàn)技術(shù)元數(shù)據(jù):數(shù)據(jù)庫的定義和描述信息←三級模式、兩級映像系統(tǒng)目錄(或數(shù)據(jù)目錄)與數(shù)據(jù)字典數(shù)據(jù)目錄--DATACATALOG(DIRECTORY)

是DBMS的一個(gè)組成部分,面向系統(tǒng)數(shù)據(jù)字典--DATADICTIONARY

是用DBMS或?qū)S密浖?shí)現(xiàn)的一個(gè)應(yīng)用系統(tǒng)面向數(shù)據(jù)庫設(shè)計(jì)人員和用戶用來管理元數(shù)據(jù)第七章

系統(tǒng)實(shí)現(xiàn)技術(shù)7.1系統(tǒng)目錄

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.1系統(tǒng)目錄一.RDBMS的系統(tǒng)目錄

1.存儲(chǔ)的內(nèi)容

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.1系統(tǒng)目錄

?

關(guān)系名,屬性名,屬性域(數(shù)據(jù)類型)

?

各種約束,主鍵,輔助鍵(候補(bǔ)鍵),外鍵,空/非空

?

視圖的外部級描述,存儲(chǔ)結(jié)構(gòu)和索引等內(nèi)部級描述

?

安全性和授權(quán)規(guī)則

?

數(shù)據(jù)完整性規(guī)則

?

運(yùn)行統(tǒng)計(jì)信息:用于查詢優(yōu)化的統(tǒng)計(jì)數(shù)據(jù)

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.1系統(tǒng)目錄SYSTAB:SYSTAB682…關(guān)系名屬性數(shù)元組大小表所有者表創(chuàng)建者元組數(shù)SYSVWATRSC33……221810SYSSYSUSER1…DBADBAUSER1…一般內(nèi)容舉例:↘SYSCOL:SYSTAB關(guān)系名Char(10)…關(guān)系名屬性名屬性類型外鍵引自關(guān)系主鍵成員SYSTABSCSNOCNO……IntegerYesStudentNoNo…外鍵成員NULL不同屬性值數(shù)缺省值屬性數(shù)Char(7)NoYesYes…………NoNoYesYesNoNoCourseNoNoYes558NULL…GRADEChar(6)Dec(4,1)SCSC

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.1系統(tǒng)目錄

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.1系統(tǒng)目錄SYSIDX:…關(guān)系名索引名成員屬性升、降序索引類型SCSC_INDEXSC_INDEX……ASC屬性序號SNOUNIQUEUNIQUE………12DESCCNOSC………………

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.1系統(tǒng)目錄SYSVIEW:…視圖名視圖定義GRADE_AVG……SELECTSNAME,AVG(GRADE)FROMSC,STUDENTWHERESC.SNO=STUDENT.SNOGROUPBYSNAME;SYSVWATR:…視圖名視圖屬性名GRADE_AVG……SNAMEAVGGRADEGRADE_AVG………12視圖屬性序號

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.1系統(tǒng)目錄

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.1系統(tǒng)目錄2.數(shù)據(jù)目錄與普通表的區(qū)別:數(shù)據(jù)目錄也是表,可以用數(shù)據(jù)庫語言的語句對其查詢但其作用、內(nèi)容、定義方法、使用范圍與一般數(shù)據(jù)不同:

◆主要由DBMS管理和使用(查詢、更新、維護(hù)),

是被頻繁訪問又非常重要的數(shù)據(jù),幾乎DBMS每一部分的運(yùn)行都離不開它

DBMS一般不允許用戶對數(shù)據(jù)目錄進(jìn)行更新操作只允許用戶對它進(jìn)行受控制的查詢。◆

數(shù)據(jù)目錄本身不能用SQL語句定義,只能由系統(tǒng)定義。

(數(shù)據(jù)目錄未定義,任何SQL語句都無法執(zhí)行)在初始化時(shí)由系統(tǒng)生成,為DBMS服務(wù),由DBMS來維護(hù)。

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.1系統(tǒng)目錄DDL編譯程序查詢和DML的分析程序和校驗(yàn)程序查詢和DML的編譯程序查詢和DML的優(yōu)化程序授權(quán)和安全性檢查程序查詢和DML命令的外部級到概念級的映象二、系統(tǒng)目錄和DBMS各子系統(tǒng)的聯(lián)系自學(xué)7.1系統(tǒng)目錄7.2事務(wù)7.3數(shù)據(jù)庫的恢復(fù)7.4數(shù)據(jù)庫的并發(fā)控制7.5并發(fā)事務(wù)的可串行化和可恢復(fù)性(略)7.6數(shù)據(jù)庫的完整性7.7數(shù)據(jù)庫的安全性第七章系統(tǒng)實(shí)現(xiàn)技術(shù)一、事務(wù)的定義

事務(wù)(transaction):是構(gòu)成單一邏輯工作單元的操作集合是DBMS執(zhí)行的工作單位由有限的數(shù)據(jù)庫操作序列組成7.2

事務(wù)一個(gè)事務(wù)由應(yīng)用程序中的一組操作序列組成

程序可以是一組數(shù)據(jù)庫語言的語句

或是宿主語言的程序一個(gè)應(yīng)用程序的運(yùn)行包含多個(gè)事務(wù)同一程序的幾次獨(dú)立執(zhí)行將產(chǎn)生不同的事務(wù)

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.2事務(wù)(a)用戶沒有顯式定義,則由DBMS按缺省規(guī)定自動(dòng)劃分

(b)用SQL語句顯式控制一個(gè)事務(wù)的開始和終止

定義事務(wù)的有關(guān)語句:

STARTTRANSACTION

顯式地定義一個(gè)事務(wù)的開始

COMMIT

提交事務(wù)的所有操作,成功結(jié)束事務(wù),使該事務(wù)對數(shù)據(jù)庫的改變對其它事務(wù)開放

SAVEPOINT<保留點(diǎn)名>

在當(dāng)前事務(wù)的當(dāng)前點(diǎn)建立保留點(diǎn)

補(bǔ)充:事務(wù)的劃分

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.2事務(wù)

(a)原子性(Atomicity):

事務(wù)的所有操作“要么全做,要么全不做”

在故障恢復(fù)時(shí)要消除未完成事務(wù)對數(shù)據(jù)庫的影響是數(shù)據(jù)庫系統(tǒng)本身的職責(zé),由DBMS事務(wù)管理子系統(tǒng)實(shí)現(xiàn)二、事務(wù)的ACID特性

――保證數(shù)據(jù)庫中數(shù)據(jù)的正確性P253

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.2事務(wù)例如:銀行數(shù)據(jù)庫中一轉(zhuǎn)帳事務(wù)T,從A帳號轉(zhuǎn)100元到B帳號

read(A);A:=A-100;

write(A);

read(B);B:=B+100;

write(B);不一致狀態(tài)一致狀態(tài)一個(gè)事務(wù)

(b)一致性(Consistency)

:事務(wù)獨(dú)立執(zhí)行的結(jié)果應(yīng)保持?jǐn)?shù)據(jù)庫的一致性*數(shù)據(jù)庫的一致性狀態(tài)――DB中的數(shù)據(jù)滿足完整性約束

*完整性約束由編寫事務(wù)的應(yīng)用程序員創(chuàng)建,

由DBMS完整性子系統(tǒng)測試

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.2事務(wù)例如:銀行數(shù)據(jù)庫中一轉(zhuǎn)帳事務(wù)T,從A帳號轉(zhuǎn)100元到B帳號

read(A);A:=A-100;

write(A);

read(B);B:=B+100;

write(B);一致狀態(tài)

(c)隔離性(Isolation):

多個(gè)事務(wù)并發(fā)執(zhí)行時(shí),系統(tǒng)應(yīng)保證與這些事務(wù)先后單獨(dú)執(zhí)行時(shí)的結(jié)果一樣由DBMS的并發(fā)控制子系統(tǒng)實(shí)現(xiàn)(d)持久性(Durability):一個(gè)已成功執(zhí)行的事務(wù)對數(shù)據(jù)庫的更新應(yīng)該永久地反映在數(shù)據(jù)庫中,故障后可恢復(fù)由DBMS的恢復(fù)子管理系統(tǒng)實(shí)現(xiàn)

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.2事務(wù)

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.2事務(wù)例:事務(wù):將款項(xiàng)S從A帳號撥給B帳號或P217

STARTTRANSACTIONread(A);A=A-S;write(A);/*暫不寫入磁盤*/ifA<0/*A款不足*/then

begin

display“A款不足”

ROLLBACK

end

else

begin

B=B+Sdisplay“撥款完成”

COMMIT

/*可寫入磁盤*/

end

三、事務(wù)的狀態(tài)變遷提交(commit)

:標(biāo)志事務(wù)已成功執(zhí)行對數(shù)據(jù)庫的更新結(jié)果可用事務(wù)失?。阂龑?shù)據(jù)庫的影響相應(yīng)的處理稱為回滾(rollback),undo撤銷操作局部提交后檢查有否并發(fā)干擾,若無,則commit,寫磁盤

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.2事務(wù)事務(wù)開始活動(dòng)狀態(tài)局部提交狀態(tài)提交狀態(tài)失敗狀態(tài)異常中止?fàn)顟B(tài)讀/寫事務(wù)正常執(zhí)行要求:

ACID準(zhǔn)則在系統(tǒng)正常時(shí)應(yīng)滿足在系統(tǒng)故障時(shí)應(yīng)滿足在單事務(wù)執(zhí)行時(shí)應(yīng)滿足在多事務(wù)并發(fā)執(zhí)行時(shí)應(yīng)滿足補(bǔ)充:事務(wù)管理概述恢復(fù)――保證事務(wù)在系統(tǒng)故障時(shí)滿足ACID準(zhǔn)則的技術(shù)并發(fā)控制――并發(fā)執(zhí)行時(shí)滿足ACID準(zhǔn)則的技術(shù)

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.2事務(wù)7.1系統(tǒng)目錄7.2事務(wù)7.3數(shù)據(jù)庫的恢復(fù)7.4數(shù)據(jù)庫的并發(fā)控制7.5并發(fā)事務(wù)的可串行化和可恢復(fù)性(略)7.6數(shù)據(jù)庫的完整性7.7數(shù)據(jù)庫的安全性第七章系統(tǒng)實(shí)現(xiàn)技術(shù)可恢復(fù)性――把數(shù)據(jù)庫從被破壞、不正確的狀態(tài)恢復(fù)到最近一個(gè)正確狀態(tài)的能力P219定義7.2系統(tǒng)故障時(shí),DBMS的恢復(fù)機(jī)制保證事務(wù)的原子性和持久性7.2數(shù)據(jù)庫的恢復(fù)撤消所有未完成事務(wù)對數(shù)據(jù)庫的一切影響→事務(wù)的原子性

恢復(fù)已提交的事務(wù)對數(shù)據(jù)庫的更改→事務(wù)的持久性

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.3數(shù)據(jù)庫的恢復(fù)一、存儲(chǔ)器結(jié)構(gòu)易失性存儲(chǔ)器

——內(nèi)存和Cache非易失性存儲(chǔ)器

——磁盤、磁帶穩(wěn)定存儲(chǔ)器

——理論概念,其中的信息決不會(huì)丟失通過對非易失存儲(chǔ)器的技術(shù)處理實(shí)現(xiàn)1.存儲(chǔ)器類型:

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.3數(shù)據(jù)庫的恢復(fù)二、恢復(fù)的基本原則和實(shí)現(xiàn)方法恢復(fù)丟失的數(shù)據(jù)修復(fù)被破壞的或不正確的數(shù)據(jù)1.恢復(fù)的內(nèi)容:3.補(bǔ)充:恢復(fù)技術(shù)及實(shí)現(xiàn)方法--僅使用后備副本的恢復(fù)技術(shù)--使用后備副本和日志文件的恢復(fù)技術(shù)--利用多個(gè)副本的恢復(fù)技術(shù)

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.3數(shù)據(jù)庫的恢復(fù)2.恢復(fù)的原則:冗余后備副本日志文件冗余數(shù)據(jù)原理:由DBA定期地將整個(gè)數(shù)據(jù)庫轉(zhuǎn)儲(chǔ)(DUMP)到磁帶或另一個(gè)磁盤上,形成數(shù)據(jù)庫副本,稱后備副本。脫機(jī)存放,故障時(shí)取最近的后備副本來恢復(fù)(1)僅使用后備副本的恢復(fù)技術(shù)效果:#數(shù)據(jù)庫只能恢復(fù)到最近轉(zhuǎn)儲(chǔ)時(shí)狀態(tài)

#從最近轉(zhuǎn)儲(chǔ)點(diǎn)至故障時(shí)所有數(shù)據(jù)庫的更新將丟失

#需重新運(yùn)行更新事務(wù)恢復(fù)重新運(yùn)行事務(wù)裝入后備副本轉(zhuǎn)儲(chǔ)最近轉(zhuǎn)儲(chǔ)點(diǎn)故障發(fā)生點(diǎn)運(yùn)行事務(wù)

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.3數(shù)據(jù)庫的恢復(fù)問題:數(shù)據(jù)量大時(shí)轉(zhuǎn)儲(chǔ)費(fèi)時(shí),

且轉(zhuǎn)儲(chǔ)期間一般不允許對數(shù)據(jù)庫操作

轉(zhuǎn)儲(chǔ)周期:不可太長,否則丟失的數(shù)據(jù)多不可太短,否則轉(zhuǎn)儲(chǔ)頻繁,影響數(shù)據(jù)庫的正常工作辦法:只轉(zhuǎn)儲(chǔ)更新過的數(shù)據(jù),轉(zhuǎn)儲(chǔ)量小,轉(zhuǎn)儲(chǔ)快,丟失數(shù)據(jù)少

增量轉(zhuǎn)儲(chǔ)――只轉(zhuǎn)儲(chǔ)更新過的數(shù)據(jù)(每晚)

海量轉(zhuǎn)儲(chǔ)――轉(zhuǎn)儲(chǔ)數(shù)據(jù)庫中的所有數(shù)據(jù)(每周)優(yōu)點(diǎn):實(shí)現(xiàn)簡單,不增加數(shù)據(jù)庫的運(yùn)行開銷缺點(diǎn):不能恢復(fù)到數(shù)據(jù)庫的最近一致狀態(tài)應(yīng)用:小型的、不重要的數(shù)據(jù)庫系統(tǒng)

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.3數(shù)據(jù)庫的恢復(fù)(a)日志文件――用來記錄事務(wù)的狀態(tài)和事務(wù)對數(shù)據(jù)庫的更新操作的文件。

是記錄式文件,由運(yùn)行記錄組成。

日志文件的主要內(nèi)容:

前像:事務(wù)所涉及的物理塊更新前的映像(舊值)BI

前像可以使數(shù)據(jù)庫恢復(fù)到更新前的狀態(tài)對應(yīng)的操作是撤銷(undo)更新→回滾rollback

后像:事務(wù)所涉及的物理塊更新后的映像(新值)AI

后像可以使數(shù)據(jù)庫恢復(fù)到更新后的狀態(tài)(更新丟失時(shí))

對應(yīng)的操作是重做(redo)一次更新→提交commit(2)使用后備副本和日志文件的恢復(fù)技術(shù)

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.3數(shù)據(jù)庫的恢復(fù)例如:對于下面每次操作,在日志文件中寫一個(gè)記錄:(1)事務(wù)T開始,日志記錄為(T,start,,,)(2)事務(wù)T修改對象A,日志記錄為(T,update,A,前像,后像)(3)事務(wù)T插入對象A,日志記錄為(T,insert,A,,后像)(4)事務(wù)T刪除對象A,日志記錄為(T,delete,A,前像,)(5)事務(wù)T提交,日志記錄為(T,commit,,,)

事務(wù)T回滾,日志記錄為(T,rollback,,,)

日志文件的內(nèi)容和結(jié)構(gòu)因DBMS的不同而異,主要內(nèi)容:

事務(wù)標(biāo)識操作類型對象標(biāo)識前像后像

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.3數(shù)據(jù)庫的恢復(fù)(d)應(yīng)用――是使用最廣的恢復(fù)技術(shù)(b)實(shí)現(xiàn)方法

平時(shí)周期性轉(zhuǎn)儲(chǔ)和建立日志發(fā)生故障時(shí):裝載最近的后備副本

按日志中的運(yùn)行記錄

對未提交事務(wù)用BI回滾(Undo)

向后恢復(fù)對已提交的事務(wù)用AI重做(Redo)

向前恢復(fù)(c)優(yōu)缺點(diǎn)

能恢復(fù)到數(shù)據(jù)庫的最近一致狀態(tài)

運(yùn)行記錄占較大空間,登記日志影響系統(tǒng)的運(yùn)行性能繼續(xù)運(yùn)行事務(wù)登記日志文件恢復(fù)裝入后備副本轉(zhuǎn)儲(chǔ)最近轉(zhuǎn)儲(chǔ)點(diǎn)

故障發(fā)生點(diǎn)運(yùn)行事務(wù)登記日志文件利用日志文件恢復(fù)

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.3數(shù)據(jù)庫的恢復(fù)原理:在系統(tǒng)中保存多個(gè)具有獨(dú)立失效模式的數(shù)據(jù)庫副本,利用這些獨(dú)立副本互為備份,進(jìn)行恢復(fù)

獨(dú)立失效模式――不會(huì)因同一故障而同時(shí)失效,各自的支撐環(huán)境(電源,磁盤,控制器,CPU等)不同

優(yōu)缺點(diǎn):易于恢復(fù)數(shù)據(jù)庫,但是硬件和系統(tǒng)的代價(jià)比較高應(yīng)用:主要用于分布式數(shù)據(jù)庫(不同結(jié)點(diǎn))(3)使用多個(gè)副本的恢復(fù)技術(shù)磁盤1磁盤2控制器1控制器2CPU1CPU2鏡像磁盤技術(shù)→

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.3數(shù)據(jù)庫的恢復(fù)數(shù)據(jù)庫恢復(fù)的具體實(shí)現(xiàn):

平時(shí)做好轉(zhuǎn)儲(chǔ)、建立日志

一旦發(fā)生數(shù)據(jù)庫故障,分情況處理:

★數(shù)據(jù)庫已被破壞:利用后備副本和日志,重做

★數(shù)據(jù)庫未被破壞,某些數(shù)據(jù)不可靠:用日志撤消

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.3數(shù)據(jù)庫的恢復(fù)(1)事務(wù)故障

事務(wù)故障――事務(wù)因不可預(yù)知的原因而中途(在提交前)夭折

原因:無法執(zhí)行

(

數(shù)據(jù)庫中無要訪問的數(shù)據(jù)、運(yùn)算溢出、不滿足約束條件)

操作員因操作錯(cuò)誤或改變主意而要求撤消事務(wù)(撥錯(cuò)款)

系統(tǒng)調(diào)度需要中止事務(wù)的執(zhí)行(并發(fā)執(zhí)行事務(wù)產(chǎn)生死鎖)

后果:可能使數(shù)據(jù)庫處于不一致的狀態(tài)

恢復(fù)對策:↘三、故障類型與恢復(fù)對策P222+補(bǔ)充

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.3數(shù)據(jù)庫的恢復(fù)

反向掃描日志文件,查找該事務(wù)的更新操作

若是Update,將BI寫入數(shù)據(jù)庫若是insert,則將數(shù)據(jù)對象刪去若是delete操作,則做插入操作,插入值為記運(yùn)行錄中的BI繼續(xù)反向掃描日志文件,對各更新操作做上述處理,直至該事務(wù)的start記錄為止實(shí)現(xiàn)者:系統(tǒng)自動(dòng)

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.3數(shù)據(jù)庫的恢復(fù)日志文件中的記錄:(T1,start,,,)(T1,update,A,BI,AI)(T1,insert,A,,AI)(T1,delete,A,BI,)………..(2)系統(tǒng)故障

系統(tǒng)故障(systemfailure)――指由于某種原因,引起系統(tǒng)停止運(yùn)行而造成的故障

可能原因:

掉電

除數(shù)據(jù)庫存儲(chǔ)介質(zhì)以外的硬件故障(如:CPU故障),軟件故障(如:操作系統(tǒng)和DBMS)

后果:內(nèi)存數(shù)據(jù)可能丟失;所有正在運(yùn)行的事務(wù)都以非正常方式中止造成數(shù)據(jù)庫處于不一致狀態(tài)

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.3數(shù)據(jù)庫的恢復(fù)恢復(fù)對策:

重新啟動(dòng)OS和DBMS

對未提交的事務(wù)進(jìn)行undo,對已提交的事務(wù)進(jìn)行redo

-從頭掃描日志文件,commit事務(wù)入重做(redo)隊(duì)列有start無commit或rollback的事務(wù)入撤消(undo)隊(duì)列

-對重做隊(duì)列中每個(gè)事務(wù)進(jìn)行redo操作:正向掃描日志文件,按登入日志文件的次序,重新執(zhí)行所登記的操作

-對撤消隊(duì)列中每個(gè)事務(wù)進(jìn)行undo操作:反向掃描日志文件,依據(jù)登入日志文件中相反次序,對每個(gè)更新操作執(zhí)行逆操作,從而恢復(fù)原狀

*若是Update,將BI寫入數(shù)據(jù)庫

*若是insert,則將數(shù)據(jù)對象刪去

*若是delete操作,則做插入操作,插入值為記錄中的BI

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.3數(shù)據(jù)庫的恢復(fù)例:日志文件中的記錄:(T1,start,,,)(T1,update,A,BI,AI)(T2,start,,,)(T2,insert,B,,AI)(T3,start,,,)(T1,commit,,,)(T3,update,C,BI,AI)(T3,commit,,,)……….

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.3數(shù)據(jù)庫的恢復(fù)存在問題:已提交事務(wù)量大

redo費(fèi)時(shí)

解決辦法:檢查點(diǎn)技術(shù)P223*運(yùn)行過程中由DBMS每隔一定時(shí)間在日志中設(shè)置一個(gè)檢查點(diǎn)(checkpoint)*在檢查點(diǎn)

-暫停事務(wù)的執(zhí)行-將上一個(gè)檢查點(diǎn)后已commit事務(wù)留在數(shù)據(jù)緩沖區(qū)中的所有數(shù)據(jù)寫入磁盤上的DB中

-將當(dāng)前日志緩沖區(qū)中的所有運(yùn)行記錄寫入磁盤的日志文件上-在日志文件中登入<checkpoint>記錄*在系統(tǒng)故障恢復(fù)時(shí),記入重做隊(duì)列的事務(wù)只是從最近一個(gè)檢查點(diǎn)之后到發(fā)生故障時(shí)已提交的事務(wù)實(shí)現(xiàn)者:系統(tǒng)自動(dòng)

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.3數(shù)據(jù)庫的恢復(fù)

事務(wù)與檢查點(diǎn):P223

檢查點(diǎn)故障點(diǎn)檢查點(diǎn)

t事務(wù):T1T2T3T4T5恢復(fù)處理:T1不必恢復(fù)

T2和T4必須REDOT3和T5必須UNDO

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.3數(shù)據(jù)庫的恢復(fù)(3)介質(zhì)故障--硬故障

介質(zhì)故障(mediafailure)――指存儲(chǔ)數(shù)據(jù)庫的磁盤發(fā)生故障可能原因:磁盤損壞、磁頭碰撞、瞬時(shí)強(qiáng)磁場干擾、病毒等

后果:使數(shù)據(jù)庫受到破環(huán)(發(fā)生概率小,破壞性大)

恢復(fù)對策:

必要時(shí)需更換磁盤

修復(fù)系統(tǒng)(包括操作系統(tǒng)和DBMS),重新啟動(dòng)系統(tǒng)

加載最近的后備副本到新的磁盤

在日志文件中找出轉(zhuǎn)儲(chǔ)以后所有已提交的事務(wù)

對已提交的事務(wù)用后像進(jìn)行redo處理實(shí)現(xiàn)者:DBA配合

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.3數(shù)據(jù)庫的恢復(fù)(1)提交規(guī)則(commitrule)后像必須在事務(wù)提交前寫入非易失存儲(chǔ)器,即寫入數(shù)據(jù)庫或運(yùn)行記錄中.(2)先記后寫規(guī)則(logaheadrule)

如果后像在事務(wù)提交前寫入數(shù)據(jù)庫,則必須把前像首先記入運(yùn)行記錄中.

四、更新事務(wù)遵循原則(參考王能斌146頁)

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.3數(shù)據(jù)庫的恢復(fù)

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)習(xí)題一P250—7.37.107.20,7.24,7.28作業(yè)7.1系統(tǒng)目錄7.2事務(wù)7.3數(shù)據(jù)庫的恢復(fù)7.4數(shù)據(jù)庫的并發(fā)控制7.5并發(fā)事務(wù)的可串行化和可恢復(fù)性(略)7.6數(shù)據(jù)庫的完整性7.7數(shù)據(jù)庫的安全性第七章系統(tǒng)實(shí)現(xiàn)技術(shù)

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.4數(shù)據(jù)庫的并發(fā)控制7.3

數(shù)據(jù)庫的并發(fā)控制

并發(fā)是在單處理機(jī)上,利用分時(shí)方法實(shí)現(xiàn)多個(gè)事務(wù)同時(shí)做數(shù)據(jù)庫的共享性允許多個(gè)用戶并發(fā)地存取其中的數(shù)據(jù)

多個(gè)事務(wù)同時(shí)訪問同一數(shù)據(jù),可能會(huì)破壞數(shù)據(jù)庫的一致性

(當(dāng)并發(fā)中有寫操作時(shí))

DBMS必須提供并發(fā)控制機(jī)制

并發(fā)的概念多事務(wù)順序執(zhí)行:串行執(zhí)行、串行存取,可保持?jǐn)?shù)據(jù)庫的一致性T3T2T1→

DBMS多事務(wù)并發(fā)執(zhí)行:T2DBMST1T3T3T2tT1

(1)改善系統(tǒng)的資源利用率(cpu、I/O等)

(2)改善短事務(wù)的響應(yīng)時(shí)間并發(fā)的目的TiTjt

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.4數(shù)據(jù)庫的并發(fā)控制7.3.1并發(fā)操作帶來的三個(gè)問題P2241.事務(wù)不加控制地并發(fā)執(zhí)行

三個(gè)問題

(1)丟失更新(loseupdate)

寫-寫沖突

T1

T2

read(A)5

執(zhí)

read(A)

5

行次

A:=A-1

4

write(A)

4

A:=2A+2

12

write(A)

12

A初值為5結(jié)果:事務(wù)T1對A的更新丟失串行T1->T2,x的終值為10

串行T2->T1,x的終值為11原因:兩個(gè)事務(wù)對同一數(shù)據(jù)并發(fā)寫,引發(fā)寫-寫沖突

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.4數(shù)據(jù)庫的并發(fā)控制(2)讀臟數(shù)據(jù)(dirtyread)

寫-讀沖突

T1

T2

read(A)

5執(zhí)

A:=A+1

6行

write(A)6次

read(A)

6

(rollback)

A=5

T2讀到的是不一致(不存在)的數(shù)據(jù)

臟數(shù)據(jù):未提交的隨后被撤銷的數(shù)據(jù)原因:一個(gè)事務(wù)讀另一個(gè)更新事務(wù)尚未提交的數(shù)據(jù),引發(fā)寫-讀沖突“臟”數(shù)據(jù)

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.4數(shù)據(jù)庫的并發(fā)控制(3)

讀值不可復(fù)現(xiàn)或不可重復(fù)讀(unrepeatableread)

讀-寫沖突

T1

T2

執(zhí)read(A)

5行次.

read(A)5序.

A:=A-23

.

write(A)3

read(A)3T1未改A,兩次讀的值卻不同原因:兩次讀期間,另一事務(wù)修改X,引發(fā)讀-寫沖突

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.4數(shù)據(jù)庫的并發(fā)控制2.問題的根源

沖突,而沖突的起因在“寫”操作3.結(jié)果:數(shù)據(jù)不一致4.解決的辦法P226

通過合理安排并發(fā)執(zhí)行的各個(gè)事務(wù)的操作順序來控制并發(fā)

(1)封鎖技術(shù)(2)時(shí)標(biāo)技術(shù)5.

DBMS并發(fā)控制子系統(tǒng)的任務(wù)

P226

協(xié)調(diào)并發(fā)事務(wù)的執(zhí)行保證數(shù)據(jù)庫的完整性避免用戶得到不正確的數(shù)據(jù)

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.4數(shù)據(jù)庫的并發(fā)控制封鎖的思路:事務(wù)在對數(shù)據(jù)對象操作前先加鎖鎖:與數(shù)據(jù)項(xiàng)相關(guān)的變量,反映數(shù)據(jù)項(xiàng)的狀態(tài),使并發(fā)事務(wù)對數(shù)據(jù)項(xiàng)的訪問能夠同步封鎖協(xié)議:加鎖時(shí)必須遵守的規(guī)則幾種有代表性的封鎖協(xié)議:補(bǔ)充

X鎖

(S,X)鎖:S--共享鎖,X--排他鎖

(S,U,X)鎖兩段封鎖協(xié)議(2PL)

嚴(yán)格的兩段封鎖協(xié)議7.3.2封鎖技術(shù)

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.4數(shù)據(jù)庫的并發(fā)控制(1)鎖類型:X鎖,既用于讀操作又用于寫操作(2)定義:一個(gè)事務(wù)對數(shù)據(jù)對象加鎖之后到釋放之前,其它事務(wù)不能再對其加鎖→排它性(eXclusive)(3)操作:XFINDR或XLOCK(R):事務(wù)對數(shù)據(jù)R加X鎖

XRELEASER或UNLOCK(R):事務(wù)要解除對R的X鎖(4)加鎖協(xié)議可用相容矩陣表示一、X鎖其它T已有鎖鎖請求NLXYNX

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.4數(shù)據(jù)庫的并發(fā)控制(5)遵守的協(xié)議

(a)PX協(xié)議:

(b)PXC協(xié)議:

PX協(xié)議XRELEASER操作合并到事務(wù)結(jié)束操作中(6)鎖的釋放--事務(wù)結(jié)束(EOT)釋放

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.4數(shù)據(jù)庫的并發(fā)控制任何企圖更新R的事務(wù)必須先執(zhí)行XLOCKR,以獲得對R的X鎖,才能讀寫R;如果未獲準(zhǔn)X鎖,那么這個(gè)事務(wù)進(jìn)入等待隊(duì)列,一直到獲準(zhǔn)X鎖,事務(wù)才能繼續(xù)做下去。

T1T2

Xlock(A)read(A)5A:=A-1Xlock(A)

write(A)4等待

unlock(A)↓

Xlock(A)

read(A)4A:=2A+2

write(A)10unlock(A)

(rollback)5﹕﹕

﹕﹕﹕﹕﹕﹕時(shí)間不遵守PXC協(xié)議:寫操作一完就釋放鎖可能:讀臟數(shù)據(jù)引起連鎖回滾

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.4數(shù)據(jù)庫的并發(fā)控制T2讀T1未提交的數(shù)據(jù)(讀臟),且丟失更新(T1回滾時(shí)) T1T2

執(zhí) read(A)5

行 read(A)5

次 A:=A-14

序 write(A)4 A:=2A+212

write(A)12

XlockAXlockA防止了丟失更新WaitWaitWait……XlockAread(A)A:=2A+2…… CommitUnlockA遵守PXC協(xié)議:

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.4數(shù)據(jù)庫的并發(fā)控制(1)鎖類型:S鎖(Sharinglocks),用于讀操作

X鎖(eXclusivelocks),用于寫操作(2)關(guān)于S鎖定義--一個(gè)事務(wù)對數(shù)據(jù)對象加S鎖之后,允許其它事務(wù)加S鎖,但不能加X鎖操作--SFINDR、UPDXR、SRELEASERSLOCK(R)、UNLOCK(R)

相關(guān)協(xié)議

(a)PS協(xié)議:用SFINDR獲得鎖才能操作用UPDXR升級鎖才能更新

(b)PSC協(xié)議:SRELEASER操作合并到事務(wù)結(jié)束操作中二、(S,X)鎖(PP.228)

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.4數(shù)據(jù)庫的并發(fā)控制若把鎖保持到事務(wù)結(jié)束,則不會(huì)讀入“臟”數(shù)據(jù),也不會(huì)出現(xiàn)讀值不可復(fù)現(xiàn)讀操作一完就釋放鎖可能引起讀值不可復(fù)現(xiàn)

T1T2

Slock(A)

read(A)

unlock(A)

Xlock(A)

write(A)

unlock(A)

Slock(A)

read(A)

unlock(A)﹕﹕時(shí)間﹕﹕﹕﹕關(guān)于鎖的釋放問題舉例:

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.4數(shù)據(jù)庫的并發(fā)控制

T1T2

Slock(A)

read(A)

UPDX(A)

A:=A-1

Xlock(A)

write(A)等待

unlock(A)↓

Xlock(A)

write(A)

unlock(A)

(rollback)﹕時(shí)間順序?qū)懖僮饕煌昃歪尫沛i可能引起讀臟數(shù)據(jù)﹕﹕﹕﹕

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.4數(shù)據(jù)庫的并發(fā)控制(4)特點(diǎn):

允許多事務(wù)并發(fā)讀,并發(fā)度較高,繁簡適度,應(yīng)用廣泛會(huì)出現(xiàn)“餓死”現(xiàn)象--X鎖的申請遲遲不能獲準(zhǔn)(5)應(yīng)遵守先申請先服務(wù)(fcfs)原則其它T已有鎖鎖請求NLSXYYNYNNSX(3)相容矩陣

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.4數(shù)據(jù)庫的并發(fā)控制三、封鎖的粒度和多粒度封鎖P229

數(shù)據(jù)對象的大小(DB、表、元組、屬性等)→粒度

封鎖粒度→被鎖數(shù)據(jù)對象的大小

多粒度封鎖→一個(gè)系統(tǒng)中提供不同粒度的封鎖(庫/表/元組/列)(1)概念(2)封鎖粒度的選擇因素兼顧系統(tǒng)開銷與并發(fā)度粒度大→并發(fā)度低→(鎖的維護(hù))開銷小粒度小→并發(fā)度高→開銷大

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.4數(shù)據(jù)庫的并發(fā)控制一.“活鎖”問題定義:系統(tǒng)可能使某個(gè)事務(wù)永遠(yuǎn)處于等待狀態(tài),得不到封鎖的機(jī)會(huì),這種現(xiàn)象稱為“活鎖”。原因:事務(wù)有優(yōu)先級,低級的始終等待解決:應(yīng)遵守先申請先服務(wù)(fcfs)原則7.3.3封鎖帶來的問題

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.4數(shù)據(jù)庫的并發(fā)控制二、“餓死”問題定義:因頻繁申請S鎖而使X鎖不可得的現(xiàn)象。解決:

事務(wù)T申請對數(shù)據(jù)項(xiàng)Q加S鎖時(shí),授權(quán)加鎖的條件是:

◆不存在在數(shù)據(jù)項(xiàng)Q上持有X鎖的其它事務(wù);

◆不存在等待對數(shù)據(jù)項(xiàng)Q加鎖且先于T申請加鎖的事務(wù)先來先服務(wù)FCFS

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.4數(shù)據(jù)庫的并發(fā)控制對付死鎖的辦法:

--預(yù)防死鎖

--檢測死鎖并處理檢測死鎖的方法:事務(wù)依賴圖P231圖7.15

有向圖:事務(wù)用結(jié)點(diǎn)表示如果Ti等待Tj,則從Ti到Tj有一條指向Tj的邊

當(dāng)且僅當(dāng)依賴圖中沿箭頭方向出現(xiàn)回路時(shí)→死鎖三.死鎖(deadlock)--事務(wù)間對鎖的循環(huán)等待T1

xlock(D1)…xlock(D2)…T2

…xlock(D2)…xlock(D1)…

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.4數(shù)據(jù)庫的并發(fā)控制t四、并發(fā)操作的調(diào)度

每個(gè)事務(wù)含有若干有序的操作

例:T1的操作R1(x),W1(x),R1(y)T2的操作R2(y),W2(y),R2(z)

(1)調(diào)度(schedules)

:對n個(gè)事務(wù)中所有操作的執(zhí)行次序的一個(gè)安排

例:

S1=R1(x)W1(x)R1(y)R2(y)W2(y)R2(z)S2=R1(x)R2(y)W1(x)W2(y)R1(y)R2(z)S3=R1(x)R2(y)W2(y)R2(z)W1(x)R1(y)

多事務(wù)并發(fā)操作

交叉執(zhí)行的次序可不同

得到的結(jié)果可能不同1.事務(wù)的調(diào)度、串行調(diào)度和并發(fā)調(diào)度

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.4數(shù)據(jù)庫的并發(fā)控制(2)兩類調(diào)度

串行調(diào)度:在一個(gè)調(diào)度中,多個(gè)事務(wù)依次順序執(zhí)行

*執(zhí)行結(jié)果正確

并發(fā)調(diào)度:在調(diào)度中,各個(gè)事務(wù)在時(shí)間上交叉執(zhí)行

*可能破壞數(shù)據(jù)庫的一致性(3)系統(tǒng)調(diào)度原則:

不同事務(wù)的操作既要交叉執(zhí)行(利用資源)

又要避免訪問沖突(4)調(diào)度的等價(jià)

S1和S2等價(jià):同一事務(wù)集的兩個(gè)調(diào)度S1和S2,在數(shù)據(jù)庫任何相同初始狀態(tài)下,執(zhí)行結(jié)果一樣

→目標(biāo)等價(jià)

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.4數(shù)據(jù)庫的并發(fā)控制2.可串行化概念

(1)可串行化調(diào)度

執(zhí)行結(jié)果等價(jià)于某一串行調(diào)度的執(zhí)行結(jié)果的并發(fā)調(diào)度例:有兩個(gè)事務(wù)T1和T2,操作序列如下:

T1→READ(A)

T2→READ(B)

A:=A-5B:=B-5WRITE(A)WRITE(B)

READ(B)

B:=B+5WRITE(B)

設(shè)初始值A(chǔ)=10,B=10

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.4數(shù)據(jù)庫的并發(fā)控制

T1T2T1T2READ(A)10READ(B)10

A:=A-55B:=B-55WRITE(A)WRITE(B)READ(B)10

READ(A)10B:=B+515A:=A-55WRITE(B)WRITE(A)

READ(B)15READ(B)5

B:=B-510B:=B+510WRITE(B)WRITE(B)

(a)串行調(diào)度1(A=5,B=10)(b)串行調(diào)度2(A=5,B=10)

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.4數(shù)據(jù)庫的并發(fā)控制

T1T2T1T2READ(A)10READ(A)10

READ(B)

10A:=A-55A:=A-55READ(B)

10

B:=B-55WRITE(A)WRITE(A)5B:=B-55WRITE(B)

READ(B)10READ(B)

5WRITE(B)B:=B+510B:=B+515WRITE(B)

WRITE(B)

(c)可串行化調(diào)度(A=5,B=10)(d)不可串行化調(diào)度(A=5,B=15)

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.4數(shù)據(jù)庫的并發(fā)控制調(diào)度(d)不目標(biāo)等價(jià)于任一串行調(diào)度→不可串行化調(diào)度有兩大類操作對:不沖突操作對沖突操作對(同一對象,有寫)

Ri(x)和Rj(x)Ri(x)和Wj(x)

Ri(x)和Wj(y)Wi(x)和Wj(x)

Wi(x)和Wj(y)造成兩個(gè)調(diào)度不等價(jià)的主要原因:沖突操作的執(zhí)行次序不同

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.4數(shù)據(jù)庫的并發(fā)控制(1)作用:

保證調(diào)度可串行化(2)兩條規(guī)則:T1:lock(A)unlock(A)lock(B)lock(C)unlock(C)unlock(B)

T2:lock(A)lock(B)lock(C)unlock(B)unlock(C)unlock(A)

鎖增長階段鎖縮減階段獲得封鎖釋放封鎖(a)事務(wù)對數(shù)據(jù)對象先加鎖后操作(b)一旦開始釋放鎖,則不可再加鎖t5.兩段封鎖協(xié)議(two-phaselockingprotocol,簡稱2PL)

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.4數(shù)據(jù)庫的并發(fā)控制(3)2PL與可串行化的關(guān)系

如果并發(fā)執(zhí)行的所有事務(wù)都遵守兩段鎖協(xié)議則對它們的任何調(diào)度都是可串行化的

2PL協(xié)議是調(diào)度可串行化的充分條件,并不是必要條件

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.4數(shù)據(jù)庫的并發(fā)控制是一個(gè)可串行化調(diào)度,等價(jià)于T1→T2→T3:S’=R1(A)R2(B)W2(A)W3(B)但T2在釋放B的鎖給T3之后,對A加鎖,不滿足2PL協(xié)議例:

T1T2T3

Slock(A)

read(A)

unlock(A)

Slock(B)

read(B)

unlock(B)

Xlock(B)

write(B)

unlock(B)

Xlock(A)

write(A)

unlock(A)S=R1(A)R2(B)W3(B)W2(A)圖:T1→T2→T3

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.4數(shù)據(jù)庫的并發(fā)控制說明:(1)

可串行化調(diào)度與串行調(diào)度的區(qū)別前者交叉執(zhí)行各事務(wù)的操作,效果上相當(dāng)于它們的某一串行執(zhí)行;

后者串行執(zhí)行各事務(wù),無并發(fā)意義,系統(tǒng)資源利用率低(2)DBMS并發(fā)控制的目的就是保證事務(wù)執(zhí)行的可串行化(3)

對同一個(gè)事務(wù)集的可串行化調(diào)度可能不止一個(gè),彼此之間不一定等價(jià)(結(jié)果可能不同),如果用戶對各事務(wù)的執(zhí)行次序有要求,則應(yīng)按次序交付各事務(wù)(4)

保證事務(wù)執(zhí)行的可串行化的實(shí)用方法是:由DBMS定一個(gè)協(xié)議,按協(xié)議執(zhí)行事務(wù)(加鎖方法、時(shí)間標(biāo)記法、樂觀法)

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.4數(shù)據(jù)庫的并發(fā)控制五、SQL中事務(wù)的存取模式和隔離級別1.事務(wù)的存取模式:2種

SETTRANSACTIONREADONLY

隨后事務(wù)均只讀

SETTRANSACTIONREADWRITE

隨后事務(wù)均為讀寫型(缺省)

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.4數(shù)據(jù)庫的并發(fā)控制2.事務(wù)的隔離級別:4級SERIALIZABLE

(缺?。㏑EPEATABLEREADREADCOMMITTEDREADUNCOMMITTED--可串行化允許事務(wù)與其它事務(wù)并發(fā)執(zhí)行,必須保證并發(fā)調(diào)度是可串行化的

-可重復(fù)讀只允許事務(wù)讀已提交的數(shù)據(jù),兩次讀同一數(shù)據(jù)時(shí)不允許其它事務(wù)修改該數(shù)據(jù)--讀提交數(shù)據(jù)允許事務(wù)讀已提交的數(shù)據(jù),不要求“可重復(fù)讀”--可以讀未提交數(shù)據(jù)允許事務(wù)讀已提交或未提交數(shù)據(jù)定義:SETTRANSACTIONISOLATIONLEVEL<SERIALIZABLE|REPEATABLEREAD|READCOMMITTED|READUNCOMMITTED>

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.4數(shù)據(jù)庫的并發(fā)控制7.1系統(tǒng)目錄7.2事務(wù)7.3數(shù)據(jù)庫的恢復(fù)7.4數(shù)據(jù)庫的并發(fā)控制7.5并發(fā)事務(wù)的可串行化和可恢復(fù)性(略)7.6數(shù)據(jù)庫的完整性7.7數(shù)據(jù)庫的安全性第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.4數(shù)據(jù)庫的完整性一.完整性子系統(tǒng)和完整性規(guī)則完整性:數(shù)據(jù)的正確性、有效性和相容性

正確性:數(shù)據(jù)的合法性(域中的值)

有效性:數(shù)據(jù)是否在所定義的有效范圍內(nèi)

相容性:同一事實(shí)的兩個(gè)數(shù)據(jù)應(yīng)相同防范對象:不合語義的數(shù)據(jù)實(shí)現(xiàn):完整性規(guī)則、完整性檢查

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.6數(shù)據(jù)庫的完整性

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.6數(shù)據(jù)庫的完整性完整性規(guī)則--數(shù)據(jù)庫的數(shù)據(jù)應(yīng)該滿足的條件完整性規(guī)則集--由DBA或應(yīng)用程序員事先向完整性子 系統(tǒng)提供的有關(guān)數(shù)據(jù)約束的一組規(guī)則完整性規(guī)則的組成:

(1)何時(shí)檢查:規(guī)則的觸發(fā)條件WHENEVER<事件>(2)檢查內(nèi)容:約束條件或謂詞IF<條件>

(3)做何處理:動(dòng)作THEN<動(dòng)作>/ELSE

完整性子系統(tǒng)--DBMS中執(zhí)行完整性檢查的子系統(tǒng)功能:◆

監(jiān)督:監(jiān)督事務(wù)的執(zhí)行,測試是否違反完整性規(guī)則

◆保護(hù):若有違反現(xiàn)象,則采取恰當(dāng)?shù)牟僮?(拒絕操作、報(bào)告、改正錯(cuò)誤)

第七章系統(tǒng)實(shí)現(xiàn)技術(shù)7.6數(shù)據(jù)庫的完整性四.SQL中的完整性約束:域約束、表約束、斷言創(chuàng)建并引用域在創(chuàng)建和修改基表時(shí)說明約束3.

溫馨提示

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

最新文檔

評論

0/150

提交評論