第7章數(shù)據(jù)庫安全保護(hù)_第1頁
第7章數(shù)據(jù)庫安全保護(hù)_第2頁
第7章數(shù)據(jù)庫安全保護(hù)_第3頁
第7章數(shù)據(jù)庫安全保護(hù)_第4頁
第7章數(shù)據(jù)庫安全保護(hù)_第5頁
已閱讀5頁,還剩46頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 教學(xué)內(nèi)容:教學(xué)內(nèi)容: 7.1 數(shù)據(jù)庫的安全性數(shù)據(jù)庫的安全性 7.2 數(shù)據(jù)庫的并發(fā)控制技術(shù)數(shù)據(jù)庫的并發(fā)控制技術(shù) 7.3 數(shù)據(jù)庫的備粉與恢復(fù)技術(shù)數(shù)據(jù)庫的備粉與恢復(fù)技術(shù) 7.4 數(shù)據(jù)庫的恢復(fù)數(shù)據(jù)庫的恢復(fù)1第第7章章 數(shù)據(jù)庫安全保護(hù)數(shù)據(jù)庫安全保護(hù)教學(xué)要求教學(xué)要求 本章要求學(xué)生本章要求學(xué)生掌握事務(wù)的概念及其特點(diǎn)掌握事務(wù)的概念及其特點(diǎn),了解什么是數(shù)據(jù)庫,了解什么是數(shù)據(jù)庫不一致狀態(tài),數(shù)據(jù)庫運(yùn)行中可能產(chǎn)生的故障類型,不一致狀態(tài),數(shù)據(jù)庫運(yùn)行中可能產(chǎn)生的故障類型, 了解了解數(shù)據(jù)庫數(shù)據(jù)庫恢復(fù)的實(shí)現(xiàn)技術(shù)數(shù)據(jù)庫數(shù)據(jù)庫恢復(fù)的實(shí)現(xiàn)技術(shù), 了解了解數(shù)據(jù)庫并發(fā)控制技術(shù)數(shù)據(jù)庫并發(fā)控制技術(shù)的必要性,的必要性,活鎖活鎖、死鎖死鎖的

2、概念,封的概念,封鎖的類型,不同封鎖類型的性質(zhì)和定義,相關(guān)的相容控制矩鎖的類型,不同封鎖類型的性質(zhì)和定義,相關(guān)的相容控制矩陣,陣,封鎖協(xié)議封鎖協(xié)議的概念,的概念,封鎖粒度封鎖粒度的概念,的概念, 掌握掌握數(shù)據(jù)庫的完整性和安全性數(shù)據(jù)庫的完整性和安全性, 了解了解數(shù)據(jù)庫的備粉與恢復(fù)數(shù)據(jù)庫的備粉與恢復(fù)技術(shù)。技術(shù)。2重點(diǎn)難點(diǎn)重點(diǎn)難點(diǎn) 【本章重點(diǎn)本章重點(diǎn)】數(shù)據(jù)庫故障恢復(fù)的策略和方法。并發(fā)控制的】數(shù)據(jù)庫故障恢復(fù)的策略和方法。并發(fā)控制的基本概念,可串行化調(diào)度。基本概念,可串行化調(diào)度。 【本章難點(diǎn)本章難點(diǎn)】事務(wù)的特性,具有檢查點(diǎn)的恢復(fù)技術(shù),如何】事務(wù)的特性,具有檢查點(diǎn)的恢復(fù)技術(shù),如何利用封鎖處理并發(fā)控制。利用

3、封鎖處理并發(fā)控制。37.1 數(shù)據(jù)庫的安全性數(shù)據(jù)庫的安全性 數(shù)據(jù)庫安全性控制是指保護(hù)計(jì)算機(jī)系統(tǒng)中的數(shù)據(jù),防止其因偶數(shù)據(jù)庫安全性控制是指保護(hù)計(jì)算機(jī)系統(tǒng)中的數(shù)據(jù),防止其因偶然或惡意的原因使數(shù)據(jù)庫系統(tǒng)遭到破壞,數(shù)據(jù)遭到更改或泄露然或惡意的原因使數(shù)據(jù)庫系統(tǒng)遭到破壞,數(shù)據(jù)遭到更改或泄露等,只允許有合法權(quán)限的用戶存取所允許的數(shù)據(jù)。等,只允許有合法權(quán)限的用戶存取所允許的數(shù)據(jù)。 數(shù)據(jù)庫的安全性主要包括數(shù)據(jù)庫的安全性主要包括用戶認(rèn)證、存取權(quán)限,視圖隔離、數(shù)用戶認(rèn)證、存取權(quán)限,視圖隔離、數(shù)據(jù)加密、跟蹤與審查等據(jù)加密、跟蹤與審查等。47.1.1 用戶認(rèn)證用戶認(rèn)證 即即用戶標(biāo)識與鑒別用戶標(biāo)識與鑒別,是系統(tǒng)提供的最外層安

4、全保護(hù)措施。,是系統(tǒng)提供的最外層安全保護(hù)措施。 其方法是由系統(tǒng)提供一定的方式其方法是由系統(tǒng)提供一定的方式讓用戶標(biāo)識自己的身份,每次讓用戶標(biāo)識自己的身份,每次用戶要求進(jìn)入系統(tǒng)時(shí),由系統(tǒng)進(jìn)行核對,通過鑒定后才獲得系用戶要求進(jìn)入系統(tǒng)時(shí),由系統(tǒng)進(jìn)行核對,通過鑒定后才獲得系統(tǒng)使用權(quán)統(tǒng)使用權(quán)。 對于獲得系統(tǒng)使用權(quán)的用戶若要使用數(shù)據(jù)庫時(shí),數(shù)據(jù)庫管理系對于獲得系統(tǒng)使用權(quán)的用戶若要使用數(shù)據(jù)庫時(shí),數(shù)據(jù)庫管理系統(tǒng)還要進(jìn)行用戶標(biāo)識和鑒定。統(tǒng)還要進(jìn)行用戶標(biāo)識和鑒定。 方法方法:用戶名和密碼用戶名和密碼方法,方法,智能卡技術(shù),物理特征智能卡技術(shù),物理特征(指紋、聲(指紋、聲音等)音等)認(rèn)證技術(shù)認(rèn)證技術(shù)等。等。57.1.2

5、 存取控制存取控制 存取權(quán)限控制是存取權(quán)限控制是DBMS提供的內(nèi)部安全性保護(hù)措施。提供的內(nèi)部安全性保護(hù)措施。 當(dāng)一個(gè)用戶登錄到當(dāng)一個(gè)用戶登錄到DBMS后,它究竟可以使用數(shù)據(jù)庫中哪些數(shù)后,它究竟可以使用數(shù)據(jù)庫中哪些數(shù)據(jù)對象,對可以使用的對象能夠執(zhí)行什么類型的操作等問題,據(jù)對象,對可以使用的對象能夠執(zhí)行什么類型的操作等問題,就是存取權(quán)限控制問題??梢远x以下兩種存取控制權(quán)限:就是存取權(quán)限控制問題??梢远x以下兩種存取控制權(quán)限: (1)數(shù)據(jù)對象權(quán)限數(shù)據(jù)對象權(quán)限:規(guī)定了用戶使用數(shù)據(jù)庫中數(shù)據(jù)對象的范圍,:規(guī)定了用戶使用數(shù)據(jù)庫中數(shù)據(jù)對象的范圍,以表以表(關(guān)系關(guān)系)、元組、屬性為基本對象;、元組、屬性為基本

6、對象; (2)操作類型權(quán)限操作類型權(quán)限:規(guī)定了用戶在可使用數(shù)據(jù)對象上能執(zhí)行的:規(guī)定了用戶在可使用數(shù)據(jù)對象上能執(zhí)行的操作操作(查詢權(quán)、插入權(quán)、刪除權(quán)、修改權(quán)等查詢權(quán)、插入權(quán)、刪除權(quán)、修改權(quán)等)。67.1.3 視圖視圖 視圖又稱虛表,是從一個(gè)或多個(gè)基本表或視圖中導(dǎo)出的表,數(shù)視圖又稱虛表,是從一個(gè)或多個(gè)基本表或視圖中導(dǎo)出的表,數(shù)據(jù)庫中僅存放視圖的定義,不存放視圖的數(shù)據(jù),視圖的數(shù)據(jù)仍據(jù)庫中僅存放視圖的定義,不存放視圖的數(shù)據(jù),視圖的數(shù)據(jù)仍然存放在導(dǎo)出視圖的基本表中然存放在導(dǎo)出視圖的基本表中。 通常將視圖機(jī)制與授權(quán)機(jī)制結(jié)合起來使用,首先通常將視圖機(jī)制與授權(quán)機(jī)制結(jié)合起來使用,首先用視圖機(jī)制屏用視圖機(jī)制屏蔽一

7、部分保密數(shù)據(jù),再在視圖上進(jìn)一步定義不同用戶的存取權(quán)蔽一部分保密數(shù)據(jù),再在視圖上進(jìn)一步定義不同用戶的存取權(quán)限限。通過定義不同的視圖及有選擇地授予不同用戶在視圖上的。通過定義不同的視圖及有選擇地授予不同用戶在視圖上的權(quán)限,可以將用戶、組或角色限制在不同的數(shù)據(jù)子集內(nèi)。權(quán)限,可以將用戶、組或角色限制在不同的數(shù)據(jù)子集內(nèi)。77.1.4跟蹤審查跟蹤審查 是一種事后監(jiān)視的安全性保護(hù)措施,是一種事后監(jiān)視的安全性保護(hù)措施, 它它跟蹤數(shù)據(jù)庫的訪問活跟蹤數(shù)據(jù)庫的訪問活動(dòng),以發(fā)現(xiàn)數(shù)據(jù)庫的非法訪問,達(dá)到安全防范的目的動(dòng),以發(fā)現(xiàn)數(shù)據(jù)庫的非法訪問,達(dá)到安全防范的目的。 DBMS的跟蹤程序可對某些保密數(shù)據(jù)進(jìn)行跟蹤監(jiān)測,并記錄有

8、的跟蹤程序可對某些保密數(shù)據(jù)進(jìn)行跟蹤監(jiān)測,并記錄有關(guān)這些數(shù)據(jù)的訪問活動(dòng)。關(guān)這些數(shù)據(jù)的訪問活動(dòng)。 跟蹤審查的結(jié)果記錄在一個(gè)特殊的文件上,這個(gè)文件叫跟蹤審跟蹤審查的結(jié)果記錄在一個(gè)特殊的文件上,這個(gè)文件叫跟蹤審查記錄。查記錄。87.1.5 數(shù)據(jù)加密數(shù)據(jù)加密 根據(jù)一定的算法將原始數(shù)據(jù)(又稱明文)變換為不可直接識別根據(jù)一定的算法將原始數(shù)據(jù)(又稱明文)變換為不可直接識別的格式(又稱密文)的格式(又稱密文)。97.2數(shù)據(jù)庫的完整性數(shù)據(jù)庫的完整性 數(shù)據(jù)庫的完整性是指數(shù)據(jù)庫中數(shù)據(jù)的數(shù)據(jù)庫的完整性是指數(shù)據(jù)庫中數(shù)據(jù)的正確性正確性、有效性和相容性有效性和相容性。 正確性正確性是指數(shù)據(jù)的合法性,是指數(shù)據(jù)的合法性, 有效性

9、有效性是指數(shù)據(jù)要在屬性域的有效范圍內(nèi),是指數(shù)據(jù)要在屬性域的有效范圍內(nèi), 相容性相容性指表示同一事實(shí)的兩個(gè)數(shù)據(jù)應(yīng)該一致。指表示同一事實(shí)的兩個(gè)數(shù)據(jù)應(yīng)該一致。 具體的具體的DBS中,數(shù)據(jù)庫完整性的定義中,數(shù)據(jù)庫完整性的定義方方法法: 一是在定義基本表時(shí)定義的一是在定義基本表時(shí)定義的實(shí)體完整性實(shí)體完整性、參照完整性參照完整性、用戶定用戶定義完整性義完整性等聲明式定義;等聲明式定義; 二是二是過程式定義過程式定義,常見的是,常見的是觸發(fā)器觸發(fā)器。107.2.1 完整性約束條件完整性約束條件 完整性約束條件作用的對象可以是關(guān)系、完整性約束條件作用的對象可以是關(guān)系、 元組、元組、 列三種粒度列三種粒度。 列

10、約束列約束主要是列的數(shù)據(jù)類型、取值范圍、精度、是否為空等;主要是列的數(shù)據(jù)類型、取值范圍、精度、是否為空等; 元組約束元組約束是元組之間列的約束關(guān)系;是元組之間列的約束關(guān)系; 關(guān)系約束關(guān)系約束是指關(guān)系中元組之間以及關(guān)系和關(guān)系之間的約束。是指關(guān)系中元組之間以及關(guān)系和關(guān)系之間的約束。 涉及完整性約束條件的這三類對象涉及完整性約束條件的這三類對象的的狀態(tài)可以是靜態(tài)的,狀態(tài)可以是靜態(tài)的, 也也可是動(dòng)態(tài)的??墒莿?dòng)態(tài)的。111)靜態(tài)列約束)靜態(tài)列約束 靜態(tài)列約束是靜態(tài)列約束是對屬性值域的說明對屬性值域的說明,是最常用也是最容易實(shí)現(xiàn)的,是最常用也是最容易實(shí)現(xiàn)的一類完整性約束,包括以下幾個(gè)方面:一類完整性約束,

11、包括以下幾個(gè)方面: 對數(shù)據(jù)類型的約束。對數(shù)據(jù)類型的約束。 對數(shù)據(jù)格式的約束。對數(shù)據(jù)格式的約束。 對取值范圍或取值集合的約束。對取值范圍或取值集合的約束。 對空值的約束。對空值的約束。122)靜態(tài)元組約束)靜態(tài)元組約束 一個(gè)元組是由若干個(gè)列值組成的,一個(gè)元組是由若干個(gè)列值組成的,靜態(tài)元組級約束是對元組中靜態(tài)元組級約束是對元組中各個(gè)屬性值之間關(guān)系的約束。各個(gè)屬性值之間關(guān)系的約束。 3)靜態(tài)關(guān)系約束)靜態(tài)關(guān)系約束 靜態(tài)關(guān)系級約束是靜態(tài)關(guān)系級約束是一個(gè)關(guān)系中各個(gè)元組之間或者若干個(gè)關(guān)系之一個(gè)關(guān)系中各個(gè)元組之間或者若干個(gè)關(guān)系之間常常存在的各種聯(lián)系的約束間常常存在的各種聯(lián)系的約束。 常見的靜態(tài)關(guān)系級約束有:

12、常見的靜態(tài)關(guān)系級約束有:實(shí)體完整性約束、參照完整性約束、實(shí)體完整性約束、參照完整性約束、函數(shù)依賴約束和統(tǒng)計(jì)約束函數(shù)依賴約束和統(tǒng)計(jì)約束等。等。134)動(dòng)態(tài)列約束)動(dòng)態(tài)列約束 動(dòng)態(tài)列約束是動(dòng)態(tài)列約束是修改列定義或修改屬性列值時(shí)應(yīng)該滿足的約束條修改列定義或修改屬性列值時(shí)應(yīng)該滿足的約束條件。件。 5)動(dòng)態(tài)元組約束)動(dòng)態(tài)元組約束 動(dòng)態(tài)元組約束是指動(dòng)態(tài)元組約束是指修改元組的值時(shí),元組中各個(gè)字段間需要滿修改元組的值時(shí),元組中各個(gè)字段間需要滿足某種約束條件。足某種約束條件。 6)動(dòng)態(tài)關(guān)系約束)動(dòng)態(tài)關(guān)系約束 動(dòng)態(tài)關(guān)系級約束就是動(dòng)態(tài)關(guān)系級約束就是加在關(guān)系變化前后狀態(tài)上的限制條件加在關(guān)系變化前后狀態(tài)上的限制條件。1

13、47.2.2 完整性控制完整性控制 根據(jù)完整性約束條件的作用對象和狀態(tài),完整性控制可以分為根據(jù)完整性約束條件的作用對象和狀態(tài),完整性控制可以分為實(shí)體完整性實(shí)體完整性、參照完整性和用戶自定義完整性參照完整性和用戶自定義完整性三大類。三大類。 對于實(shí)體完整性,參照完整性和比較簡單的用戶自定義完整性對于實(shí)體完整性,參照完整性和比較簡單的用戶自定義完整性可以通過聲明的方式來定義,并采用立即執(zhí)行的方式;可以通過聲明的方式來定義,并采用立即執(zhí)行的方式; 對于比較復(fù)雜的用戶自定義完整性,則必須通過編寫觸發(fā)器的對于比較復(fù)雜的用戶自定義完整性,則必須通過編寫觸發(fā)器的方式來定義,并采用延遲執(zhí)行的方式。方式來定義,

14、并采用延遲執(zhí)行的方式。151.實(shí)體完整性實(shí)體完整性 實(shí)體完整性約束定義比較簡單,在在實(shí)體完整性約束定義比較簡單,在在SQL中一般中一般通過主鍵通過主鍵(PRIMARY KEY)子句)子句來實(shí)現(xiàn)來實(shí)現(xiàn)。 當(dāng)實(shí)體完整性定義好后,當(dāng)實(shí)體完整性定義好后,關(guān)系中元組的主鍵屬性值就不能為空關(guān)系中元組的主鍵屬性值就不能為空且主鍵值不能重復(fù)且主鍵值不能重復(fù)。 162.參照完整性參照完整性 定義了數(shù)據(jù)庫中不同的表之間的聯(lián)系,通過在參照表(又稱副定義了數(shù)據(jù)庫中不同的表之間的聯(lián)系,通過在參照表(又稱副表)表)中添加外鍵(中添加外鍵(FOREIGN KEY)子句)子句來實(shí)現(xiàn)來實(shí)現(xiàn)。 由于參照表中的某一屬性參照被參照表

15、中的主鍵,所有對被由于參照表中的某一屬性參照被參照表中的主鍵,所有對被參照表和參照表進(jìn)行插入、刪除和修改操作可能破壞參照完整參照表和參照表進(jìn)行插入、刪除和修改操作可能破壞參照完整性,都必須進(jìn)行檢查。性,都必須進(jìn)行檢查。173.用戶自定義完整性用戶自定義完整性 根據(jù)應(yīng)用環(huán)境的要求和實(shí)際的需要,對某一具體應(yīng)用所涉及的根據(jù)應(yīng)用環(huán)境的要求和實(shí)際的需要,對某一具體應(yīng)用所涉及的數(shù)據(jù)提出約束性條件。數(shù)據(jù)提出約束性條件。 用戶自定義完整性主要包括用戶自定義完整性主要包括CHECK約束約束、默認(rèn)值默認(rèn)值(DEFAULT)約束、唯一(約束、唯一(UNIQUE)約束、不為空()約束、不為空(NOT NULL)等約束

16、)等約束。 但對于比較復(fù)雜的用戶自定義完整性,必須采用但對于比較復(fù)雜的用戶自定義完整性,必須采用觸發(fā)器觸發(fā)器方式進(jìn)方式進(jìn)行定義。行定義。187.2.3 數(shù)據(jù)庫完整性設(shè)計(jì)原則數(shù)據(jù)庫完整性設(shè)計(jì)原則 (1)根據(jù)數(shù)據(jù)庫完整性約束的類型確定其實(shí)現(xiàn)的層次和方式,)根據(jù)數(shù)據(jù)庫完整性約束的類型確定其實(shí)現(xiàn)的層次和方式,并提前考慮對系統(tǒng)性能的影響。并提前考慮對系統(tǒng)性能的影響。 (2)實(shí)體完整性約束,參照完整性約束,簡單的用戶自定義)實(shí)體完整性約束,參照完整性約束,簡單的用戶自定義約束在定義關(guān)系模式時(shí)一起定義。約束在定義關(guān)系模式時(shí)一起定義。 (3)要慎用觸發(fā)器功能)要慎用觸發(fā)器功能 (4)在需求分析階段制定完整性約

17、束的命名規(guī)范)在需求分析階段制定完整性約束的命名規(guī)范 (5)對數(shù)據(jù)庫完整性進(jìn)行測試,排除隱含的完整性約束間的)對數(shù)據(jù)庫完整性進(jìn)行測試,排除隱含的完整性約束間的沖突和對性能的影響。沖突和對性能的影響。 (6)如果條件允許,要有專職的數(shù)據(jù)庫設(shè)計(jì)小組。)如果條件允許,要有專職的數(shù)據(jù)庫設(shè)計(jì)小組。197.3 數(shù)據(jù)庫的并發(fā)控制技術(shù)數(shù)據(jù)庫的并發(fā)控制技術(shù) 數(shù)據(jù)庫并發(fā)控制是指利數(shù)據(jù)庫并發(fā)控制是指利用封鎖技術(shù)用封鎖技術(shù),控制多個(gè)用戶對同一數(shù)控制多個(gè)用戶對同一數(shù)據(jù)的并發(fā)操作,以保證多個(gè)用戶并發(fā)訪問的順利進(jìn)行據(jù)的并發(fā)操作,以保證多個(gè)用戶并發(fā)訪問的順利進(jìn)行。207.3.1 事務(wù)事務(wù) 事務(wù)事務(wù)(Transaction)

18、是數(shù)據(jù)庫的邏輯工作單位,是用戶定義的是數(shù)據(jù)庫的邏輯工作單位,是用戶定義的一個(gè)數(shù)據(jù)庫操作序列一個(gè)數(shù)據(jù)庫操作序列,這些操作要么全做,要么全不做,是一,這些操作要么全做,要么全不做,是一個(gè)不可分割的工作單位。個(gè)不可分割的工作單位。 事務(wù)通常是以事務(wù)通常是以BEGIN TRANSACTION開始,以開始,以COMMIT或或ROLLBACK結(jié)束。結(jié)束。21事務(wù)事務(wù)T,從賬戶,從賬戶A轉(zhuǎn)轉(zhuǎn)20000元到賬戶元到賬戶BBEGIN TRANSACTION /*事務(wù)開始語句事務(wù)開始語句*/ Read(A); A= A -20000; IF (A 0) THEN print “金額不足,不能轉(zhuǎn)賬金額不足,不能轉(zhuǎn)賬

19、”;ROLLBACK; /*事務(wù)回退語句事務(wù)回退語句*/ ELSE Write(A);); Read(B); B = B +20000; Write(B);); COMMIT; /*事務(wù)提交語句事務(wù)提交語句*/22事務(wù)是恢復(fù)和事務(wù)是恢復(fù)和并發(fā)控制并發(fā)控制的基本單位的基本單位,具有具有ACID特性特性 1)原子性原子性 事務(wù)是數(shù)據(jù)庫的邏輯工作單位,包含的一組更新操作是事務(wù)是數(shù)據(jù)庫的邏輯工作單位,包含的一組更新操作是原子不原子不可分可分的。的。 2)一致性一致性 要求事務(wù)執(zhí)行完成后,使要求事務(wù)執(zhí)行完成后,使數(shù)據(jù)庫數(shù)據(jù)庫從一個(gè)一致性狀態(tài)變到另一個(gè)從一個(gè)一致性狀態(tài)變到另一個(gè)一致性狀態(tài)一致性狀態(tài)。23

20、3)隔離性隔離性 指在多個(gè)事務(wù)指在多個(gè)事務(wù)并發(fā)執(zhí)行并發(fā)執(zhí)行時(shí),時(shí),一個(gè)事務(wù)的執(zhí)行不能被其他事務(wù)干一個(gè)事務(wù)的執(zhí)行不能被其他事務(wù)干擾擾。 4)持續(xù)性持續(xù)性 持續(xù)性也稱永久性(持續(xù)性也稱永久性(permanence),指一個(gè)事務(wù)),指一個(gè)事務(wù)一旦提交,一旦提交,它對它對數(shù)據(jù)庫數(shù)據(jù)庫中數(shù)據(jù)的改變就應(yīng)該是永久性的中數(shù)據(jù)的改變就應(yīng)該是永久性的。247.3.2 并發(fā)控制所帶來的問題并發(fā)控制所帶來的問題 1.丟失更新問題丟失更新問題(Lost Update) 指事務(wù)指事務(wù)T1與事務(wù)與事務(wù)T2從數(shù)據(jù)庫中讀入同一數(shù)據(jù)并修改,事務(wù)從數(shù)據(jù)庫中讀入同一數(shù)據(jù)并修改,事務(wù)T2的提交結(jié)果破壞了事務(wù)的提交結(jié)果破壞了事務(wù)T1提交

21、的結(jié)果,導(dǎo)致事務(wù)提交的結(jié)果,導(dǎo)致事務(wù)T1的修改被的修改被丟失。丟失。 2.讀讀“臟臟”數(shù)據(jù)(數(shù)據(jù)(irty Read) 由于一個(gè)事務(wù)讀取另一個(gè)更新事務(wù)尚未提交的數(shù)據(jù),導(dǎo)致所讀由于一個(gè)事務(wù)讀取另一個(gè)更新事務(wù)尚未提交的數(shù)據(jù),導(dǎo)致所讀到的數(shù)據(jù)不一致或不存在。到的數(shù)據(jù)不一致或不存在。 3.不可重復(fù)讀不可重復(fù)讀(Non-Repeatable Read) 不可重復(fù)讀是指事務(wù)不可重復(fù)讀是指事務(wù)T1讀取數(shù)據(jù)后,事務(wù)讀取數(shù)據(jù)后,事務(wù)T2執(zhí)行更新操作,執(zhí)行更新操作,使使T1無法再現(xiàn)前一次讀取結(jié)果。無法再現(xiàn)前一次讀取結(jié)果。257.3.2 并發(fā)控制所帶來的問題并發(fā)控制所帶來的問題T1T2T1T2T1T2Read(x)

22、=100X:=x+1Write(x)=101Read(x)=100X:=x+1Write(x)=101Read(x)=100X:=2xWrite(x)=200(rollback)x恢復(fù)為恢復(fù)為100Read(x)=200Read(x)=100Read(x)=200(重復(fù)讀不對重復(fù)讀不對)Read(x)=100X:=2xWrite(x)=20026(a)丟失更新)丟失更新 (b)讀臟數(shù)據(jù))讀臟數(shù)據(jù) (c)不可重復(fù)讀)不可重復(fù)讀實(shí)現(xiàn)數(shù)據(jù)庫并發(fā)控制的方法有多種,常用的有實(shí)現(xiàn)數(shù)據(jù)庫并發(fā)控制的方法有多種,常用的有封鎖封鎖(Locking)方方法法7.3.3 封鎖封鎖 所謂所謂封鎖就是事務(wù)封鎖就是事務(wù)T在

23、對某個(gè)數(shù)據(jù)對象例如表在對某個(gè)數(shù)據(jù)對象例如表、記錄等操作之記錄等操作之前,先向系統(tǒng)發(fā)出請求,對其加鎖前,先向系統(tǒng)發(fā)出請求,對其加鎖。 基本的封鎖類型有兩種:基本的封鎖類型有兩種: 排它鎖排它鎖(Exclusive Locks,簡稱,簡稱X鎖鎖) 共享鎖共享鎖(Share Locks,簡稱,簡稱S鎖鎖)271.排他型封鎖(排他型封鎖(Exclusive Lock,簡稱,簡稱X鎖)鎖) 排它鎖,又稱為寫鎖。排它鎖,又稱為寫鎖。 如果事務(wù)如果事務(wù)T對某個(gè)數(shù)據(jù)對某個(gè)數(shù)據(jù)R實(shí)現(xiàn)了實(shí)現(xiàn)了X鎖,鎖,那么在那么在T對數(shù)據(jù)對數(shù)據(jù)R解除封鎖之前,不允許其他事務(wù)解除封鎖之前,不允許其他事務(wù)T再對該數(shù)據(jù)再對該數(shù)據(jù)加任何

24、類型的鎖。加任何類型的鎖。 若事務(wù)若事務(wù)T對數(shù)據(jù)對象對數(shù)據(jù)對象A加上加上X鎖,鎖,則只允許則只允許T讀取和修改讀取和修改A,其,其它任何事務(wù)都不能再對它任何事務(wù)都不能再對A加任何類型的鎖,直到加任何類型的鎖,直到T釋放釋放A上的上的X鎖。鎖。28 使用使用X鎖的操作有兩個(gè):鎖的操作有兩個(gè): (1)申請)申請X鎖操作鎖操作“XFIND R” (2)解除)解除X鎖操作鎖操作“XUnlock(R)”應(yīng)該合并到事務(wù)的結(jié)束應(yīng)該合并到事務(wù)的結(jié)束(COMMIT或或ROLLBACK)操作中。)操作中。292.共享型封鎖(共享型封鎖(Shared Lock,簡稱,簡稱S鎖)鎖) 共享鎖又稱為讀鎖,如果事務(wù)共享鎖

25、又稱為讀鎖,如果事務(wù)T對某數(shù)據(jù)對某數(shù)據(jù)R加上加上S鎖后,仍允鎖后,仍允許其他事務(wù)再對該數(shù)據(jù)加許其他事務(wù)再對該數(shù)據(jù)加S鎖,鎖,但但決不允許任何事務(wù)對該數(shù)決不允許任何事務(wù)對該數(shù)據(jù)加據(jù)加X鎖。鎖。 若事務(wù)若事務(wù)T對數(shù)據(jù)對象對數(shù)據(jù)對象A加上加上S鎖,則事務(wù)鎖,則事務(wù)T可以讀數(shù)據(jù)可以讀數(shù)據(jù)A,但不但不能修改數(shù)據(jù)能修改數(shù)據(jù)A,其它事務(wù)只能再對,其它事務(wù)只能再對A加加S鎖,而不能加鎖,而不能加X鎖,。鎖,。30使用使用S鎖的操作有三個(gè):鎖的操作有三個(gè): (1)申請)申請S鎖操作鎖操作“SFIND R” 。 (2)升級和寫操作)升級和寫操作“UPDX R” 。 (3)解除)解除S鎖操作鎖操作“SUnlock(

26、 R)”:表示事務(wù):表示事務(wù)T解除對數(shù)解除對數(shù)據(jù)據(jù)R的的S鎖操作應(yīng)該合并到事務(wù)的結(jié)束操作中。鎖操作應(yīng)該合并到事務(wù)的結(jié)束操作中。31表表7.3 排它鎖與共享鎖的相容矩陣排它鎖與共享鎖的相容矩陣T1T1 T2T2XS-XNNYSNYY-YYY323.利用封鎖來解決并發(fā)控制所帶來的問題利用封鎖來解決并發(fā)控制所帶來的問題T1T2T1T2T1T2XFIND(x)Read(x)=100X:=x+1Write(x)=101COMMITXUnlockxXFIND(x)等待等待等待等待等待等待等待等待獲取獲取XlockxRead(x)=101X:=x+1Write(x)=102COMMITXUnlockxXFI

27、ND(x)Read(x)=100X:=2xWrite(x)=200(rollback)x恢復(fù)為恢復(fù)為100XUnlockxSFIND(x)等待等待等待等待等待等待獲取獲取SlockxRead(x)=100SUnlockxSFIND(x)Read(x)=100Read(x)=100SUnlockxXFIND(x)等待等待等待等待等待等待獲取獲取XlockxRead(x)=100X:=2xWrite(x)=200COMMITXUnlockx33(a)丟失更新)丟失更新 (b)讀臟數(shù)據(jù))讀臟數(shù)據(jù) (c)不可重復(fù)讀)不可重復(fù)讀4. 封鎖粒度封鎖粒度(Granularity) 封鎖對象的大小封鎖對象的大

28、小稱為封鎖粒度。稱為封鎖粒度。 封鎖粒度與系統(tǒng)的并發(fā)度和并發(fā)控制的開銷密切相關(guān)封鎖粒度與系統(tǒng)的并發(fā)度和并發(fā)控制的開銷密切相關(guān) 封鎖的封鎖的粒度越大粒度越大,數(shù)據(jù)庫所能夠封鎖的數(shù)據(jù)單元就越少,并發(fā),數(shù)據(jù)庫所能夠封鎖的數(shù)據(jù)單元就越少,并發(fā)度就越小,系統(tǒng)度就越小,系統(tǒng)開銷也越小開銷也越?。?反之,封鎖的反之,封鎖的粒度越小粒度越小,數(shù)據(jù)庫所能夠封鎖的數(shù)據(jù)單元就越多,數(shù)據(jù)庫所能夠封鎖的數(shù)據(jù)單元就越多,并發(fā)度較高,但系統(tǒng)并發(fā)度較高,但系統(tǒng)開銷也就越大開銷也就越大。345. 封鎖帶來的問題封鎖帶來的問題 封鎖協(xié)議解決了并發(fā)操作帶來的數(shù)據(jù)不一致性問題,但有可能封鎖協(xié)議解決了并發(fā)操作帶來的數(shù)據(jù)不一致性問題,但

29、有可能產(chǎn)生產(chǎn)生活鎖活鎖、餓死和死鎖餓死和死鎖問題,其中最主要的就是問題,其中最主要的就是“死鎖死鎖”(deadlock)問題。)問題。35圖圖7-4活鎖和死鎖活鎖和死鎖T1T2T3T4T1T2XFIND(x)Read(x)=100.COMMITXUnlockxXFIND(x)等待等待等待等待等待等待等待等待等待等待等待等待等待等待等待等待XFIND(x).XUnlockxXFIND(x)SUnlockxXFIND(R1).XFIND(R2)等待等待等待等待等待等待等待等待等待等待等待等待XFIND(R2).XFIND(R1)等待等待等待等待等待等待等待等待36(a)活鎖)活鎖 (b)死鎖)死鎖

30、 避免活鎖的方法避免活鎖的方法:采用采用先來先服務(wù)先來先服務(wù)的策略。的策略。 避免餓死現(xiàn)象的方法避免餓死現(xiàn)象的方法:用用授權(quán)加鎖授權(quán)加鎖的方式。的方式。 解決死鎖問題主要有兩類方法解決死鎖問題主要有兩類方法: 一是采取一定措施來預(yù)防死鎖的發(fā)生,一是采取一定措施來預(yù)防死鎖的發(fā)生, 二二是允許發(fā)生死鎖,采用一定手段定期診斷系統(tǒng)中有無死鎖,是允許發(fā)生死鎖,采用一定手段定期診斷系統(tǒng)中有無死鎖,若有則解除之。若有則解除之。376.死鎖的預(yù)防死鎖的預(yù)防 預(yù)防死鎖通常有兩種方法:預(yù)防死鎖通常有兩種方法: 1)一次封鎖法一次封鎖法 它要求每個(gè)事務(wù)必須一次將所有要使用的數(shù)據(jù)全部加鎖,它要求每個(gè)事務(wù)必須一次將所有

31、要使用的數(shù)據(jù)全部加鎖, 否否則就不能繼續(xù)執(zhí)行。則就不能繼續(xù)執(zhí)行。 2)順序封鎖法順序封鎖法 它是預(yù)先對數(shù)據(jù)對象規(guī)定一個(gè)封鎖順序,所有事務(wù)都按這個(gè)順?biāo)穷A(yù)先對數(shù)據(jù)對象規(guī)定一個(gè)封鎖順序,所有事務(wù)都按這個(gè)順序?qū)嵭蟹怄i。序?qū)嵭蟹怄i。387.死鎖的診斷與解除死鎖的診斷與解除 判斷系統(tǒng)中是否存在死鎖有兩種方法:判斷系統(tǒng)中是否存在死鎖有兩種方法: 1)超時(shí)法超時(shí)法 如果一個(gè)事務(wù)的等待時(shí)間超過了規(guī)定的時(shí)限,就認(rèn)為發(fā)生了死如果一個(gè)事務(wù)的等待時(shí)間超過了規(guī)定的時(shí)限,就認(rèn)為發(fā)生了死鎖。鎖。 2)等待圖法等待圖法 DBMS的并發(fā)控制子系統(tǒng)一旦檢測到系統(tǒng)中存在死鎖,就要設(shè)的并發(fā)控制子系統(tǒng)一旦檢測到系統(tǒng)中存在死鎖,就要設(shè)法

32、解除。通常采用的方法是選擇一個(gè)處理死鎖代價(jià)最小的事務(wù),法解除。通常采用的方法是選擇一個(gè)處理死鎖代價(jià)最小的事務(wù),將其撤消,釋放此事務(wù)持有的所有的鎖,使其他事務(wù)得以繼續(xù)將其撤消,釋放此事務(wù)持有的所有的鎖,使其他事務(wù)得以繼續(xù)運(yùn)行下去。運(yùn)行下去。397.3.4 并行調(diào)度的可串行化并行調(diào)度的可串行化 1.事務(wù)的調(diào)度、串行調(diào)度和并發(fā)調(diào)度事務(wù)的調(diào)度、串行調(diào)度和并發(fā)調(diào)度 事務(wù)的執(zhí)行次序稱為事務(wù)的執(zhí)行次序稱為“事務(wù)的調(diào)度事務(wù)的調(diào)度”。 如果如果多個(gè)事務(wù)依次執(zhí)行多個(gè)事務(wù)依次執(zhí)行,則稱為事務(wù)的,則稱為事務(wù)的串行調(diào)度串行調(diào)度。 如果如果利用分時(shí)的方法利用分時(shí)的方法,同時(shí)處理多個(gè)事務(wù)同時(shí)處理多個(gè)事務(wù),則稱為事,則稱為事

33、務(wù)的并發(fā)務(wù)的并發(fā)調(diào)度調(diào)度。 2. 并發(fā)調(diào)度的可串行化并發(fā)調(diào)度的可串行化 多個(gè)事務(wù)的并發(fā)執(zhí)行是正確的,當(dāng)且僅當(dāng)其結(jié)果與按某一次序多個(gè)事務(wù)的并發(fā)執(zhí)行是正確的,當(dāng)且僅當(dāng)其結(jié)果與按某一次序串行地執(zhí)行它們時(shí)的結(jié)果相同串行地執(zhí)行它們時(shí)的結(jié)果相同,我們稱這種調(diào)度策略為,我們稱這種調(diào)度策略為可串行可串行化的調(diào)度化的調(diào)度。407.4 數(shù)據(jù)庫的恢復(fù)數(shù)據(jù)庫的恢復(fù) 數(shù)據(jù)庫恢復(fù)是指數(shù)據(jù)庫恢復(fù)是指在數(shù)據(jù)庫系統(tǒng)發(fā)生各種故障后,使數(shù)據(jù)庫中的在數(shù)據(jù)庫系統(tǒng)發(fā)生各種故障后,使數(shù)據(jù)庫中的數(shù)據(jù)從錯(cuò)誤狀態(tài)恢復(fù)到最近一次正確狀態(tài)的過程數(shù)據(jù)從錯(cuò)誤狀態(tài)恢復(fù)到最近一次正確狀態(tài)的過程。417.4.1 數(shù)據(jù)庫恢復(fù)的原理及其實(shí)現(xiàn)技術(shù)數(shù)據(jù)庫恢復(fù)的原理及

34、其實(shí)現(xiàn)技術(shù) 數(shù)據(jù)庫恢復(fù)的基本原理數(shù)據(jù)庫恢復(fù)的基本原理:數(shù)據(jù)的冗余數(shù)據(jù)的冗余,所謂冗余,即數(shù)據(jù)的重,所謂冗余,即數(shù)據(jù)的重復(fù)存儲(chǔ)。復(fù)存儲(chǔ)。 典型的典型的數(shù)據(jù)庫恢復(fù)實(shí)現(xiàn)技術(shù)數(shù)據(jù)庫恢復(fù)實(shí)現(xiàn)技術(shù)如下:如下: 1. 冗余數(shù)據(jù)的生成冗余數(shù)據(jù)的生成 生成冗余數(shù)據(jù)就是平時(shí)做好數(shù)據(jù)的轉(zhuǎn)儲(chǔ)和建立日志數(shù)據(jù)庫。生成冗余數(shù)據(jù)就是平時(shí)做好數(shù)據(jù)的轉(zhuǎn)儲(chǔ)和建立日志數(shù)據(jù)庫。 2. 冗余重建冗余重建 冗余重建,即利用冗余數(shù)據(jù)恢復(fù)數(shù)據(jù)庫冗余重建,即利用冗余數(shù)據(jù)恢復(fù)數(shù)據(jù)庫,把數(shù)據(jù)庫恢復(fù)到最把數(shù)據(jù)庫恢復(fù)到最近一次故障前的一致性狀態(tài)。近一次故障前的一致性狀態(tài)。427.4.2檢查點(diǎn)技術(shù)檢查點(diǎn)技術(shù) 檢查點(diǎn)技術(shù)是在日志文件中增加一類新的記錄檢查點(diǎn)

35、技術(shù)是在日志文件中增加一類新的記錄檢查點(diǎn)記錄,檢查點(diǎn)記錄,數(shù)據(jù)庫管理系統(tǒng)定時(shí)設(shè)置檢查點(diǎn),在檢查點(diǎn)時(shí)刻才把對數(shù)據(jù)庫數(shù)據(jù)庫管理系統(tǒng)定時(shí)設(shè)置檢查點(diǎn),在檢查點(diǎn)時(shí)刻才把對數(shù)據(jù)庫的修改寫入磁盤,并在日志文件中寫入一條檢查點(diǎn)記錄的修改寫入磁盤,并在日志文件中寫入一條檢查點(diǎn)記錄。43圖圖7-5事務(wù)的狀態(tài)圖事務(wù)的狀態(tài)圖44利用檢查點(diǎn)方法的基本恢復(fù)步驟分成兩步:利用檢查點(diǎn)方法的基本恢復(fù)步驟分成兩步: 1)根據(jù)日志文件建立事務(wù)重做隊(duì)列和事務(wù)撤銷隊(duì)列。根據(jù)日志文件建立事務(wù)重做隊(duì)列和事務(wù)撤銷隊(duì)列。 正向掃描日志文件,找出在故障發(fā)生前已經(jīng)提交的事務(wù),建立正向掃描日志文件,找出在故障發(fā)生前已經(jīng)提交的事務(wù),建立事務(wù)事務(wù)重做隊(duì)

36、列重做隊(duì)列。例如圖中的。例如圖中的T2,T3,T5。 建立建立事務(wù)撤消隊(duì)列事務(wù)撤消隊(duì)列,找出故障發(fā)生時(shí)尚未完成的事務(wù)(例如圖,找出故障發(fā)生時(shí)尚未完成的事務(wù)(例如圖中的中的T4,T6 2)對重做隊(duì)列做對重做隊(duì)列做REDO處理,對撤銷隊(duì)列做處理,對撤銷隊(duì)列做UNDO處理。處理。 正向掃描日志文件,根據(jù)重做隊(duì)列對每一個(gè)重做事務(wù)實(shí)施對數(shù)正向掃描日志文件,根據(jù)重做隊(duì)列對每一個(gè)重做事務(wù)實(shí)施對數(shù)據(jù)庫的更新操作。例如據(jù)庫的更新操作。例如REDO的順序:的順序:先先T2、再、再T3,最后最后T5。 反向掃描日志文件,根據(jù)撤銷隊(duì)列的記錄對每一個(gè)撤銷事務(wù)的反向掃描日志文件,根據(jù)撤銷隊(duì)列的記錄對每一個(gè)撤銷事務(wù)的更新操

37、作執(zhí)行逆操作。例圖中更新操作執(zhí)行逆操作。例圖中UNDO的順序:的順序:先先T6后后T4。457.4.3 故障種類和恢復(fù)的方法故障種類和恢復(fù)的方法 1事務(wù)故障及其恢復(fù)事務(wù)故障及其恢復(fù) 事務(wù)故障是指事務(wù)在運(yùn)行至正常終止點(diǎn)前被終止,這時(shí)恢復(fù)子事務(wù)故障是指事務(wù)在運(yùn)行至正常終止點(diǎn)前被終止,這時(shí)恢復(fù)子系統(tǒng)應(yīng)利用日志文件撤銷系統(tǒng)應(yīng)利用日志文件撤銷(UNDO)此事務(wù)已對數(shù)據(jù)庫進(jìn)行的修此事務(wù)已對數(shù)據(jù)庫進(jìn)行的修改。改。 事務(wù)故障可分為兩種:事務(wù)故障可分為兩種: (1)可預(yù)期的事務(wù)故障??深A(yù)期的事務(wù)故障。 (2)非預(yù)期的事務(wù)故障非預(yù)期的事務(wù)故障 事務(wù)故障的恢復(fù)是由系統(tǒng)自動(dòng)完成的事務(wù)故障的恢復(fù)是由系統(tǒng)自動(dòng)完成的,對用戶是透明的。,對用戶是透明的。462系統(tǒng)故障及其恢復(fù)系統(tǒng)故障及其恢復(fù) 系統(tǒng)故障主要是由于服務(wù)器在運(yùn)行過程中,突然發(fā)生硬件錯(cuò)誤、系統(tǒng)故障主要是由于服務(wù)器在運(yùn)行過程中,突然發(fā)生硬件錯(cuò)誤、操作系統(tǒng)故障、操作系統(tǒng)故障、DBMS錯(cuò)誤、停電等原因造成的非正常中斷,錯(cuò)誤、停電等原因造成的非正常中斷,致使整個(gè)系統(tǒng)停止運(yùn)行,所有事務(wù)全部突然中

溫馨提示

  • 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

提交評論