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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

?

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

?

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

?

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

?

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

?

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

?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

事務一個事務由應用程序中的一組操作序列組成

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

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

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

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

定義事務的有關語句:

STARTTRANSACTION

顯式地定義一個事務的開始

COMMIT

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

SAVEPOINT<保留點名>

在當前事務的當前點建立保留點

補充:事務的劃分

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

(a)原子性(Atomicity):

事務的所有操作“要么全做,要么全不做”

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

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

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

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

write(A);

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

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

(b)一致性(Consistency)

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

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

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

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

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

write(A);

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

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

(c)隔離性(Isolation):

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

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

第七章系統(tǒng)實現(xiàn)技術7.2事務例:事務:將款項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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

是記錄式文件,由運行記錄組成。

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

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

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

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

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

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

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

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

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

事務標識操作類型對象標識前像后像

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

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

按日志中的運行記錄

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

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

向前恢復(c)優(yōu)缺點

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

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

故障發(fā)生點運行事務登記日志文件利用日志文件恢復

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

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

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

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

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

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

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

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

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

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

原因:無法執(zhí)行

(

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

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

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

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

恢復對策:↘三、故障類型與恢復對策P222+補充

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

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

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

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

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

可能原因:

掉電

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

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

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

重新啟動OS和DBMS

對未提交的事務進行undo,對已提交的事務進行redo

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

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

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

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

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

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

第七章系統(tǒng)實現(xiàn)技術7.3數(shù)據(jù)庫的恢復例:日志文件中的記錄:(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)實現(xiàn)技術7.3數(shù)據(jù)庫的恢復存在問題:已提交事務量大

redo費時

解決辦法:檢查點技術P223*運行過程中由DBMS每隔一定時間在日志中設置一個檢查點(checkpoint)*在檢查點

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

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

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

事務與檢查點:P223

檢查點故障點檢查點

t事務:T1T2T3T4T5恢復處理:T1不必恢復

T2和T4必須REDOT3和T5必須UNDO

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

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

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

恢復對策:

必要時需更換磁盤

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

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

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

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

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

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

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

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

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

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

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

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

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

(當并發(fā)中有寫操作時)

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

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

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

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

(2)改善短事務的響應時間并發(fā)的目的TiTjt

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

三個問題

(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é)果:事務T1對A的更新丟失串行T1->T2,x的終值為10

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

第七章系統(tǒng)實現(xiàn)技術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ù)原因:一個事務讀另一個更新事務尚未提交的數(shù)據(jù),引發(fā)寫-讀沖突“臟”數(shù)據(jù)

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

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

讀-寫沖突

T1

T2

執(zhí)read(A)

5行次.

read(A)5序.

A:=A-23

.

write(A)3

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

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

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

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

(1)封鎖技術(2)時標技術5.

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

P226

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

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

X鎖

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

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

嚴格的兩段封鎖協(xié)議7.3.2封鎖技術

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

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

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

(a)PX協(xié)議:

(b)PXC協(xié)議:

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

第七章系統(tǒng)實現(xiàn)技術7.4數(shù)據(jù)庫的并發(fā)控制任何企圖更新R的事務必須先執(zhí)行XLOCKR,以獲得對R的X鎖,才能讀寫R;如果未獲準X鎖,那么這個事務進入等待隊列,一直到獲準X鎖,事務才能繼續(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﹕﹕

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

第七章系統(tǒng)實現(xiàn)技術7.4數(shù)據(jù)庫的并發(fā)控制T2讀T1未提交的數(shù)據(jù)(讀臟),且丟失更新(T1回滾時) 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)實現(xiàn)技術7.4數(shù)據(jù)庫的并發(fā)控制(1)鎖類型:S鎖(Sharinglocks),用于讀操作

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

相關協(xié)議

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

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

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

T1T2

Slock(A)

read(A)

unlock(A)

Xlock(A)

write(A)

unlock(A)

Slock(A)

read(A)

unlock(A)﹕﹕時間﹕﹕﹕﹕關于鎖的釋放問題舉例:

第七章系統(tǒng)實現(xiàn)技術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)﹕時間順序?qū)懖僮饕煌昃歪尫沛i可能引起讀臟數(shù)據(jù)﹕﹕﹕﹕

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

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

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

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

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

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

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

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

事務T申請對數(shù)據(jù)項Q加S鎖時,授權加鎖的條件是:

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

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

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

--預防死鎖

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

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

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

xlock(D1)…xlock(D2)…T2

…xlock(D2)…xlock(D1)…

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

每個事務含有若干有序的操作

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

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

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

例:

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)

多事務并發(fā)操作

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

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

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

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

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

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

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

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

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

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

→目標等價

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

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

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

T1→READ(A)

T2→READ(B)

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

READ(B)

B:=B+5WRITE(B)

設初始值A=10,B=10

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

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

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

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

第七章系統(tǒng)實現(xiàn)技術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)事務對數(shù)據(jù)對象先加鎖后操作(b)一旦開始釋放鎖,則不可再加鎖t5.兩段封鎖協(xié)議(two-phaselockingprotocol,簡稱2PL)

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

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

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

第七章系統(tǒng)實現(xiàn)技術7.4數(shù)據(jù)庫的并發(fā)控制是一個可串行化調(diào)度,等價于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)實現(xiàn)技術7.4數(shù)據(jù)庫的并發(fā)控制說明:(1)

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

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

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

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

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

SETTRANSACTIONREADONLY

隨后事務均只讀

SETTRANSACTIONREADWRITE

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論