第7章 系統(tǒng)實(shí)現(xiàn)技術(shù)_第1頁(yè)
第7章 系統(tǒng)實(shí)現(xiàn)技術(shù)_第2頁(yè)
第7章 系統(tǒng)實(shí)現(xiàn)技術(shù)_第3頁(yè)
第7章 系統(tǒng)實(shí)現(xiàn)技術(shù)_第4頁(yè)
第7章 系統(tǒng)實(shí)現(xiàn)技術(shù)_第5頁(yè)
已閱讀5頁(yè),還剩55頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、第七章 系統(tǒng)實(shí)現(xiàn)技術(shù) 1 本章重要概念(一) (1)系統(tǒng)目錄及其和dbms各子系統(tǒng)的聯(lián)系。 (2)事務(wù)的定義,commit和rollback的語(yǔ)義, 事務(wù)的acid性質(zhì),事務(wù)的狀態(tài)變遷圖。 (3)存儲(chǔ)器類型,穩(wěn)定存儲(chǔ)器的實(shí)現(xiàn),數(shù)據(jù)傳 送過程。 (4)恢復(fù)的定義、基本原則和實(shí)現(xiàn)方法,故障 的類型,檢查點(diǎn)技術(shù),redo和undo操作,運(yùn) 行記錄優(yōu)先原則。 2 本章重要概念(二) (5)并發(fā)操作帶來的三個(gè)問題,x鎖、px協(xié)議、 pxc協(xié)議,s鎖、ps協(xié)議、psc協(xié)議,活鎖、 餓死和死鎖,并發(fā)調(diào)度,串行調(diào)度,并發(fā)調(diào)度 的可串行化,兩段封鎖法,sql中事務(wù)的存取 模式和隔離級(jí)別。 (6)完整性的定義,完

2、整性子系統(tǒng)的功能,完 整性規(guī)則的組成。sql中的三大類完整性約束, sql3中的觸發(fā)器技術(shù)。 (7)安全性的定義、級(jí)別,權(quán)限,sql中的安 全性機(jī)制,幾種常用的安全性措施,自然環(huán)境 的安全性。 3 主要內(nèi)容和學(xué)習(xí)要求 n7.1 系統(tǒng)目錄 (理解) n7.2 事務(wù) (綜合應(yīng)用) n7.3 數(shù)據(jù)庫(kù)的恢復(fù) (理解) n7.4 數(shù)據(jù)庫(kù)的并發(fā)控制 (了解) n7.5 并發(fā)事務(wù)的可串行化和可恢復(fù)性(了解) n7.6 數(shù)據(jù)庫(kù)的完整性(理解) n7.7 數(shù)據(jù)庫(kù)的安全性(理解) n小結(jié) 4 系統(tǒng)實(shí)現(xiàn)技術(shù) n本章主要涉及實(shí)現(xiàn)dbms時(shí)的具體技術(shù)。在 dbs運(yùn)行時(shí),系統(tǒng)有一個(gè)“系統(tǒng)目錄”,用于 存放數(shù)據(jù)庫(kù)結(jié)構(gòu)的描述

3、。dbs運(yùn)行的最小邏輯 工作單位是“事務(wù)”,所有對(duì)數(shù)據(jù)庫(kù)的操作, 都要以事務(wù)作為一個(gè)整體單位來執(zhí)行或撤銷。 ndbms對(duì)db的監(jiān)控,稱為數(shù)據(jù)庫(kù)的管理,有時(shí) 也稱為數(shù)據(jù)庫(kù)的保護(hù)。對(duì)數(shù)據(jù)庫(kù)的管理主要通 過四個(gè)方面實(shí)現(xiàn):數(shù)據(jù)庫(kù)的恢復(fù)、并發(fā)控制、 完整性控制和安全性控制。 5 系統(tǒng)目錄 n什么是系統(tǒng)目錄 n系統(tǒng)目錄的重要性 n系統(tǒng)目錄的內(nèi)容 n元數(shù)據(jù) 6 rdbms系統(tǒng)目錄的存儲(chǔ)內(nèi)容 n關(guān)系名,屬性名,屬性域(數(shù)據(jù)類型) n各種約束,主鍵,輔助鍵,外鍵,空值/非空 值 n視圖的外部級(jí)描述,存儲(chǔ)結(jié)構(gòu)和索引的內(nèi)部級(jí) 描述 n安全性和授權(quán)規(guī)則 n數(shù)據(jù)完整性規(guī)則 注意:這些數(shù)據(jù)都以表格的形式存在 7 某些rd

4、bms的系統(tǒng)目錄內(nèi)容 rel_and_attr_catalog rel_nameattr_nameattr_typemember_of_pkmember_of_fkfk_relation 關(guān)系 名 屬性 名 屬性 類型 主 鍵 外鍵 外鍵關(guān)系 relation_keys rel_namekey_numbermember_attr (a)存儲(chǔ)鍵信息的目錄關(guān)系 relation_indexes rel_nameindex_namemember_attrindex_typeattr_noasc_desc (b)存儲(chǔ)索引信息的目錄關(guān)系 view_querier view_attributes view

5、_namequery view_nameattr_nameattr_num (c)存儲(chǔ)視圖信息的目錄關(guān)系 8 系統(tǒng)目錄的擴(kuò)充er圖 屬性 鍵 視圖屬性 視圖關(guān)系 關(guān)系 基本關(guān)系 索引 屬性名 鍵類型 d 數(shù)據(jù)類型 鍵編號(hào) 關(guān)系名 查詢 索引類型屬性序號(hào)索引名 屬性名 k_a r_i r_f i_a k_i r_a r_k v_a 外鍵 9 系統(tǒng)目錄和dbms各子系 統(tǒng)的聯(lián)系 ddl編譯程序 dml優(yōu)化程序 dml命令的外 部級(jí)到概念級(jí) 映象 dml編譯程序 dml分析校 驗(yàn)程序 dbms 處理和檢查三級(jí) 模式兩級(jí)映象 檢查查詢涉及的 關(guān)系名屬性名等 將查詢涉及的概念 模式轉(zhuǎn)換成內(nèi)模式, 產(chǎn)生訪

6、問計(jì)劃 根據(jù)物理結(jié)構(gòu)優(yōu) 化查詢執(zhí)行方案 將查詢中的視圖由外 部級(jí)導(dǎo)到概念級(jí)映象 處理和檢查權(quán)限 授權(quán)和安全程序 10 主要內(nèi)容 n7.1 系統(tǒng)目錄 n7.27.2 事務(wù)事務(wù) n7.3 數(shù)據(jù)庫(kù)的恢復(fù) n7.4 數(shù)據(jù)庫(kù)的并發(fā)控制 n7.5 并發(fā)事務(wù)的可串行化和可恢復(fù)性 n7.6 數(shù)據(jù)庫(kù)的完整性 n7.7 數(shù)據(jù)庫(kù)的安全性 n小結(jié) 11 事務(wù) n定義 事務(wù)(transaction)是構(gòu)成單一邏輯工作單元的操作集合 n性質(zhì) n原子性(atomicity):事務(wù)是一個(gè)不可分割的工作單元 n一致性(consistency) :即數(shù)據(jù)不會(huì)應(yīng)事務(wù)的執(zhí)行而遭受破 壞 n隔離性(isolation) :在多個(gè)事務(wù)并

7、發(fā)執(zhí)行時(shí),系統(tǒng)應(yīng)保證 與這些事務(wù)先后單獨(dú)執(zhí)行時(shí)的結(jié)果一樣 n持久性(durability) :一個(gè)事務(wù)一旦完成全部操作后,它 對(duì)數(shù)據(jù)庫(kù)的所有更新應(yīng)永久地反映在數(shù)據(jù)庫(kù)中 12 例子:事務(wù)及其性質(zhì) 問題:設(shè)銀行數(shù)據(jù)庫(kù)中有一轉(zhuǎn)賬事 務(wù)t,從賬號(hào)a轉(zhuǎn)一筆款子($50) 到賬號(hào)b。 相應(yīng)的事務(wù): t:read(a); a:=a50; write(a); read(b); b:=b + 50; write(b). n原子性(a,b同時(shí)被修 改或同時(shí)保持原值) n一致性(a+b的值不變) n隔離性 n持久性 13 事務(wù)提交和事務(wù)撤銷 n事務(wù)的所有操作都完成了,則事務(wù)提交 (commit),否則事務(wù)撤銷(ro

8、llback) nbegin transaction標(biāo)志事務(wù)開始執(zhí)行 nbegin transaction和commit或 rollback一起保證了事務(wù)的四個(gè)性質(zhì) n對(duì)數(shù)據(jù)庫(kù)訪問的兩個(gè)基本操作:讀和寫, 但完成寫操作后,數(shù)據(jù)可能暫時(shí)放在內(nèi) 存中,而非直接寫進(jìn)數(shù)據(jù)庫(kù)。 14 主要內(nèi)容 n7.1 系統(tǒng)目錄 n7.2 事務(wù) n7.3 7.3 數(shù)據(jù)庫(kù)的恢復(fù)數(shù)據(jù)庫(kù)的恢復(fù) n7.4 數(shù)據(jù)庫(kù)的并發(fā)控制 n7.5 并發(fā)事務(wù)的可串行化和可恢復(fù)性 n7.6 數(shù)據(jù)庫(kù)的完整性 n7.7 數(shù)據(jù)庫(kù)的安全性 n小結(jié) 15 存儲(chǔ)器類型 n易失性存儲(chǔ)器(volatile storage) 內(nèi)存、cache存儲(chǔ)器 n非易失性存

9、儲(chǔ)器(nonvolatile storage) 磁盤和磁帶 n穩(wěn)定存儲(chǔ)器(stable storage) 這是一個(gè)理論上的概念。存儲(chǔ)在穩(wěn)定存儲(chǔ)器中的信息是決不會(huì) 丟失的。 n穩(wěn)定存儲(chǔ)器的實(shí)現(xiàn) n數(shù)據(jù)備份 n數(shù)據(jù)銀行 16 塊和塊的操作 n塊、物理塊和緩沖塊 n塊的操作 ninput(a):把物理 塊a的內(nèi)容傳送到內(nèi) 存的緩沖塊中。 noutput(b):把緩 沖塊b的內(nèi)容傳送到 磁盤中恰當(dāng)?shù)奈锢韷K 中 b 內(nèi)存 a b 磁盤 input(a) output(b) 圖7.5 塊操作 17 數(shù)據(jù)訪問 write(x) xi 包含x的塊bx存 在, read(x) 事務(wù) 系統(tǒng) 開 始 請(qǐng)求read(

10、x) 事務(wù)工作區(qū) 分配 x 磁盤緩沖區(qū) 掃描內(nèi)存 磁盤 包含x的塊bx存 在,input(b) 18 恢復(fù)和原子性的聯(lián)系 銀行轉(zhuǎn)賬系統(tǒng) a=2000 b=1000 事務(wù) a=a-100 b=b+100 output(a) output(b) 斷電或其 他故障 假設(shè)沒有事務(wù)的 原子性,那么重 新啟動(dòng)事務(wù)時(shí)要 么a因?yàn)樵賵?zhí)行 一遍而為1800, 要么b因從未執(zhí) 行而保持原值 要達(dá)到原子性,必 須要把描述修改的 信息輸出到穩(wěn)定存 儲(chǔ)器中,但此時(shí)不 修改磁盤中的數(shù)據(jù)。 這個(gè)過程直到事務(wù) 的commit操作為 止。有兩種方式可 實(shí)現(xiàn)這個(gè)過程, “日志日志”和和“陰陰 影頁(yè)影頁(yè)”技術(shù)。 19 恢復(fù)的基本原

11、則和實(shí)現(xiàn)方法 n基本原則 :“冗余”,即數(shù)據(jù)庫(kù)重復(fù)存儲(chǔ) n具體實(shí)現(xiàn)方法 n平時(shí)做好兩件事:轉(zhuǎn)儲(chǔ)和建立日志 n周期地(比如一天一次)對(duì)整個(gè)數(shù)據(jù)庫(kù)進(jìn)行拷貝,轉(zhuǎn)儲(chǔ)到 另一個(gè)磁盤或磁帶一類存儲(chǔ)介質(zhì)中。 n 建立日志數(shù)據(jù)庫(kù)。記錄事務(wù)的開始、結(jié)束及數(shù)據(jù)每一次 插入、刪除和修改前后的值,并寫到“日志”庫(kù)中。 n 一旦發(fā)生數(shù)據(jù)庫(kù)故障,分兩種情況進(jìn)行處理 n如果數(shù)據(jù)庫(kù)已被破壞,則裝入last數(shù)據(jù)庫(kù)備份,再利用日 志庫(kù)將這兩個(gè)數(shù)據(jù)庫(kù)狀態(tài)之間的所有更新重新做一遍。 n如果數(shù)據(jù)庫(kù)未被破壞,但某些數(shù)據(jù)不可靠,則撤消所有不 可靠的修改,把數(shù)據(jù)庫(kù)恢復(fù)到正確的狀態(tài)。 20 故障類型和恢復(fù)方法 n事務(wù)故障(恢復(fù)由系統(tǒng)自動(dòng)進(jìn)行)

12、 n可以預(yù)期的事務(wù)故障,如存款余額透支等(加入判 斷和rollback語(yǔ)句) n非預(yù)期事務(wù)故障,如運(yùn)算溢出、數(shù)據(jù)錯(cuò)誤、死鎖等 (由系統(tǒng)直接對(duì)該事務(wù)執(zhí)行undo處理) n系統(tǒng)故障(軟故障) (恢復(fù)由系統(tǒng)自動(dòng)進(jìn)行) 硬件故障、軟件錯(cuò)誤或掉電等等(需要重新啟動(dòng)來恢 復(fù)到正確的狀態(tài)) u對(duì)未完成事務(wù)作undo處理 u對(duì)已提交事務(wù)但更新還留在緩沖區(qū)的事務(wù)進(jìn)行 redo處理 n介質(zhì)故障(硬故障) (恢復(fù)需要dba配合執(zhí)行) 磁盤物理故障或遭受病毒破壞p261恢復(fù)過程 21 檢查點(diǎn)方法 n什么是檢查點(diǎn)方法 n檢查點(diǎn)方法的恢復(fù)算 法 n根據(jù)日志文件建立事 務(wù)重做隊(duì)列和事務(wù)撤 銷隊(duì)列 n對(duì)重做隊(duì)列中的事務(wù) 進(jìn)行

13、redo處理,對(duì)撤 消隊(duì)列中的事務(wù)進(jìn)行 undo處理 - 事務(wù) 檢查點(diǎn) 故障點(diǎn)tf 時(shí)間 檢查點(diǎn)tc t1 t3 t2 t5 t4 事務(wù)t1不必恢復(fù);事務(wù)t2和事務(wù)t4必 須重做(redo);事務(wù)t3和事務(wù)t5必 須撤消(undo) 22 sql對(duì)事務(wù)的支持 n無begin transaction ncommit nrollback n游標(biāo) 23 主要內(nèi)容 n7.1 系統(tǒng)目錄 n7.2 事務(wù) n7.3 數(shù)據(jù)庫(kù)的恢復(fù) n7.4 7.4 數(shù)據(jù)庫(kù)的并發(fā)控制數(shù)據(jù)庫(kù)的并發(fā)控制 n7.5 并發(fā)事務(wù)的可串行化和可恢復(fù)性 n7.6 數(shù)據(jù)庫(kù)的完整性 n7.7 數(shù)據(jù)庫(kù)的安全性 n小結(jié) 24 數(shù)據(jù)庫(kù)的并發(fā)控制 n這

14、里的“并發(fā)”是指在單處理機(jī)上,利 用分時(shí)方法實(shí)行多個(gè)事物同時(shí)做。 n數(shù)據(jù)庫(kù)的并發(fā)操作通常會(huì)帶來四個(gè)問題: 丟失更新問題、讀臟數(shù)據(jù)問題、錯(cuò)誤求 和問題和不可重復(fù)讀問題 25 并發(fā)操作帶來的問題1-丟失更新 時(shí)間更新事務(wù)t1數(shù)據(jù)庫(kù)中a的值更新事務(wù)t2 t0 100 t1find a t2 find a t3a:=a-30 t4 a:=a*2 t5upd a t6 70upd a t7 200 圖7.10 在時(shí)間t7丟失了事務(wù)t1的更新 (find表示從db中讀值,upd表示把值寫回到db) 26 并發(fā)操作帶來的問題2-讀臟數(shù)據(jù) 時(shí)間更新事務(wù)t1數(shù)據(jù)庫(kù)中a的值讀事務(wù)t2 t0 100 t1find

15、a t2a:=a-30 t3upd a t4 70find a t5*rollback* t6 100 圖7.11 事務(wù)t2在時(shí)間t4讀了未提交的a值(70) 時(shí)間更新事務(wù)t1數(shù)據(jù)庫(kù)中a的值更新事務(wù)t2 t0 100 t1find a t2a:=a-30 t3upd a t4 70find a t5 a:=a*2 t6 upd a t7 140 t8*rollback* t9 100 圖7.12 事務(wù)t2在時(shí)間t4讀了未提交的a值,并在時(shí)間t8丟失了自己的更新 27 并發(fā)操作帶來的問題3-錯(cuò)誤求和 時(shí)間讀事務(wù)t1 數(shù)據(jù)庫(kù)中a、b、c的 值 更新事務(wù)t2 t0 40,50,30 t1find a

16、 t2sum:=a t3find b t4 sum:=sum +b t5 find c t6 c:=c-10 t7 upd c t8 40,50,20find a t9 a:=a+10 t10 upd a t11 50,50,20commit t12find c t13 sum:=sum +c 事務(wù)t1進(jìn)行了不一致的分析 28 并發(fā)操作帶來的問題4-不可重復(fù)讀問題 時(shí)間讀事務(wù)t1數(shù)據(jù)庫(kù)中a的值更新事務(wù)t2 t0100 t1find a t2find a t3a:=a*2 t4upd a t5200commit t6find a 29 解決方法 以上問題都需要并發(fā)控制子系統(tǒng)來解決。對(duì)于圖7.10

17、的 丟失更新問題可以采取下列三種措施之一加以解決: 在時(shí)間t2應(yīng)避免事務(wù)t2執(zhí)行find操作。因?yàn)榇藭r(shí)事務(wù) t1已讀了a值,將要進(jìn)行更新。 在時(shí)間t5應(yīng)避免事務(wù)t1執(zhí)行upd操作。因?yàn)槭聞?wù)t2已 在使用a值。 在時(shí)間t6應(yīng)避免事務(wù)t2執(zhí)行upd操作。因?yàn)槭聞?wù)t1已 寫了新的a值,事務(wù)t2的寫操作將把t1的寫操作沖掉 實(shí)現(xiàn)“避免”的方法有兩種: n封鎖技術(shù)( 或 )(較實(shí)用) n時(shí)標(biāo)( 或 ) 30 x鎖和s鎖 nx鎖定義 n操作 nxfind r nxrelease r npx協(xié)議: 任何企圖更新記錄r的事務(wù)必須先 執(zhí)行“xfind r”操作,以獲得 對(duì)r的x鎖,才能讀或?qū)懹涗況; 如果未獲準(zhǔn)

18、x鎖,那么這個(gè)事務(wù) 進(jìn)入等待隊(duì)列,一直到獲準(zhǔn)x鎖, 事務(wù)才能繼續(xù)做下去。 npxc協(xié)議 x鎖的解除操作應(yīng)該合并到事務(wù)的 結(jié)束(commit或rollback)操作 中 ns鎖定義 n操作 nsfind r nupdx r nsrelease r nps協(xié)議 任何要讀記錄r的事務(wù)必須先執(zhí)行 “sfind r”操作,以獲得對(duì)r的s 鎖。當(dāng)事務(wù)獲準(zhǔn)對(duì)r的s鎖后,若 要更新記錄r必須用“updx r”操 作,這個(gè)操作首先把s鎖升級(jí)為x 鎖,若成功則更新記錄,否則這 個(gè)事務(wù)進(jìn)入等待隊(duì)列 npsc協(xié)議 s鎖的解除操作應(yīng)該合并到事務(wù)的結(jié) 束 31 例:使用x鎖封鎖解決數(shù)據(jù)丟失 時(shí)間更新事務(wù)t1數(shù)據(jù)庫(kù)中a的值

19、更新事務(wù)t2 t0 100 t1xfind a t2 xfind a(失敗) wait(等待) t3a:=a-30 wait t4 wait t5upd a wait t6 70wait t7commit(包括解鎖) wait t8 xfind a(重做) t9 a:=a*2 t10 upd a t11 140 commit(包括解鎖) 32 例:使用s鎖封鎖解決數(shù)據(jù)丟失 時(shí)間更新事務(wù)t1數(shù)據(jù)庫(kù)中a的值更新事務(wù)t2 t0 100 t1sfind a t2 sfind a t3a:=a-30 t4 a:=a*2 t5updx a(失?。?t6wait updx a(失 ?。?t7wait wai

20、t t8wait wait 33 封鎖的相容矩陣 注: n = n o , 不 相 容 的 請(qǐng) 求 y=yes,相容的請(qǐng)求 x、s、:分別表示x鎖, s鎖,無鎖 如果兩個(gè)封鎖是不相容的, 則后提出封鎖的事務(wù)要等待。 x s x s n n y n y y y y y t2 t1 34 封鎖的粒度 n 封鎖對(duì)象的大小稱為封鎖的粒度 (granularity) n封鎖的對(duì)象 n邏輯單元:屬性值、屬性值集合、元組、關(guān)系、索 引項(xiàng)、整個(gè)索引、整個(gè)數(shù)據(jù)庫(kù) n物理單元 :頁(yè)(數(shù)據(jù)頁(yè)或索引頁(yè))、塊 n封鎖粒度與系統(tǒng)并發(fā)度和并發(fā)控制開銷密切相 關(guān)。粒度越大,系統(tǒng)中能被封鎖的對(duì)象就越少, 并發(fā)度就越小,但同時(shí)系

21、統(tǒng)的開銷也就越??; 相反,粒度越小,并發(fā)度越高,系統(tǒng)開銷越大 35 封鎖帶來的問題1-(活鎖) t1 xfind a t2 xfind a t3 xfind a a a已被封鎖, 不成功,等待 a剛被釋 放,成功 時(shí)間點(diǎn) a剛被t2釋 放,成功 t1永遠(yuǎn)等待 活鎖! 解決方法:先來先服務(wù) 36 封鎖帶來的問題2-餓死 事務(wù)序列 a1 a2 a3 a4 a5 資源a t2 t2永遠(yuǎn)不 能封鎖 解決方法,改變授權(quán)方式: 當(dāng)事務(wù)t2申請(qǐng)對(duì)數(shù)據(jù)項(xiàng)q加s鎖時(shí),授權(quán)加鎖的條件是: 不存在在數(shù)據(jù)項(xiàng)q上持有x鎖的其他事務(wù); 不存在等待對(duì)數(shù)據(jù)項(xiàng)q加鎖且先于t2申請(qǐng)加鎖的事務(wù) 每一個(gè)事務(wù)均請(qǐng)求 a的s鎖,成功后一

22、 段時(shí)間釋放 請(qǐng)求a 的x鎖 37 封鎖帶來的問題3-死鎖 時(shí)間事務(wù)t1事務(wù)t2 t0xfind a t1 xfind b t2xfind b t3waitxfind a t4waitwait 死鎖 若事務(wù)依賴圖 有環(huán)則可能死 鎖 t1 t2 t3 t4 圖7.20 事務(wù)的無環(huán) 依賴圖 t1 t2 t3 t4 圖7.21 事務(wù)的有環(huán) 依賴圖 38 并發(fā)操作的調(diào)度 n事務(wù)的調(diào)度 :事務(wù)的執(zhí)行次序稱為“調(diào)度” n串行調(diào)度:如果多個(gè)事務(wù)依次執(zhí)行,則稱為事務(wù)的 串行調(diào)度(serial schedule) n并發(fā)調(diào)度:如果利用分時(shí)的方法,同時(shí)處理多個(gè)事 務(wù),則稱為事務(wù)的并發(fā)調(diào)度(concurrent s

23、chedule) n可串行化 :如果一個(gè)并發(fā)調(diào)度的執(zhí)行結(jié)果與某一串 行調(diào)度的執(zhí)行結(jié)果等價(jià),那么這個(gè)并發(fā)調(diào)度稱為 “可串行化的調(diào)度”,否則是不可串行化的調(diào)度 39 兩段封鎖協(xié)議 n 在對(duì)任何一個(gè)數(shù)據(jù)進(jìn)行讀寫操作之前,事務(wù)必 須獲得對(duì)該數(shù)據(jù)的封鎖; n在釋放一個(gè)封鎖之后,事務(wù)不再獲得任何其他 封鎖 n遵守該協(xié)議的事務(wù)分為兩個(gè)階段:獲得封鎖階 段,也稱為“擴(kuò)展”階段;釋放封鎖階段,也 稱為“收縮”階段 n如果所有的事務(wù)都遵守“兩段封鎖協(xié)議”,則 所有可能的并發(fā)調(diào)度都是可串行化的 40 sql中事務(wù)的存取模式 n read only(只讀型):事務(wù)對(duì)數(shù)據(jù)庫(kù)的操作只 能是讀操作。定義這個(gè)模式后,表示隨后

24、的事務(wù)均是 只讀型。 nread write(讀寫型):事務(wù)對(duì)數(shù)據(jù)庫(kù)的操作 可以是讀操作,也可以是寫操作。定義這個(gè)模式后, 表示隨后的事務(wù)均是讀寫型。在程序開始時(shí)默認(rèn)這種 模式 n這兩種模式可用下列sql語(yǔ)句定義: set transaction read only set transaction read write 41 sql中事務(wù)的隔離級(jí)別 nserializable(可串行化):允許事務(wù)并發(fā)執(zhí)行,但須保證并 發(fā)調(diào)度可串行化,是默認(rèn)級(jí)別。 nrepeatable read(可重復(fù)讀):只許事務(wù)讀已提交的數(shù)據(jù), 且兩次讀之間不許其他事務(wù)修改此數(shù)據(jù)。事務(wù)可以不可串行化。 nread com

25、mitted(讀提交數(shù)據(jù)):允許事務(wù)讀已提交的數(shù)據(jù), 但不要求“可重復(fù)讀”。 nread uncommitted(可以讀未提交數(shù)據(jù)):允許事務(wù)讀已 提交或未提交的數(shù)據(jù)。 n上述四種級(jí)別可以用下列sql語(yǔ)句定義: set transaction isolation level serializable set transaction isolation level repeatable read set transaction isolation level read committed set transaction isolation level read uncommitted 高 低 4

26、2 主要內(nèi)容 n7.1 系統(tǒng)目錄 n7.2 事務(wù) n7.3 數(shù)據(jù)庫(kù)的恢復(fù) n7.4 數(shù)據(jù)庫(kù)的并發(fā)控制 n7.5 并發(fā)事務(wù)的可串行化和可恢復(fù)性 n7.6 7.6 數(shù)據(jù)庫(kù)的完整性數(shù)據(jù)庫(kù)的完整性 n7.7 數(shù)據(jù)庫(kù)的安全性 n小結(jié) 43 完整性子系統(tǒng)和完整性規(guī)則 n數(shù)據(jù)庫(kù)的完整性 n指數(shù)據(jù)的正確性、有效性和相容性,防止錯(cuò)誤的數(shù)據(jù)進(jìn)入數(shù)據(jù)庫(kù)。 n完整性子系統(tǒng)的主要功能 n監(jiān)督事務(wù)的執(zhí)行,并測(cè)試是否違反完整性規(guī)則 n若有違反現(xiàn)象,則采取恰當(dāng)?shù)牟僮?,譬如拒絕操作、報(bào)告違反情況、 改正錯(cuò)誤等方法來處理 n完整性規(guī)則 n什么時(shí)候使用規(guī)則進(jìn)行檢查(稱為規(guī)則的“觸發(fā)條件”) n要檢查什么樣的錯(cuò)誤(稱為“約束條件”或

27、“謂詞”) n如果查出錯(cuò)誤,應(yīng)該怎么辦(稱為“else子句”,即違反時(shí)要做的 動(dòng)作) 44 sql中的完整性約束1-域約束 和斷言 n域約束 用“create domain”語(yǔ)句定義新的 域,并且還可出現(xiàn)check子句 n斷言 n如果完整性約束牽涉面較廣,與 多個(gè)關(guān)系有關(guān),或者與聚合操作 有關(guān),那么sql2提供“斷言” (assertions)機(jī)制讓用戶書寫 完整性約束 ncreate assertion check() ndrop assertion n定義一個(gè)新的域color,可用 下列語(yǔ)句實(shí)現(xiàn): create domain color charcreate domain color ch

28、ar(6 6) default default ? constraintconstraint v_colors v_colors checkcheck(value in value in (red,yellow,red,yellow, blueblue,greengreen,?);); n每位教師開設(shè)的課程不能超 過10門。 create assertioncreate assertion asse1 check asse1 check(10 = all10 = all (select countselect count(c#c#)from c from c group by group by

29、 tnametname);); 45 sql中的完整性約束2-基本表 的約束 n候選鍵的定義 primary key(列名序列) n外鍵的定義 foreign key(列名序列)references () on delete on update n“檢查約束”的定義 check(條件表達(dá)式) 46 關(guān)于外鍵約束完整性的補(bǔ)充 n刪除參照表中元組時(shí)的考慮 nno action ncascade方式 nrestrict方式 nset null方式 nset default方式 n修改參照表中主鍵值時(shí)的考慮、 nno action ncascade方式 nrestrict方式 nset null方式

30、nset default方式 47 關(guān)于數(shù)據(jù)庫(kù)完整性的例子 學(xué)生關(guān)系s(s#,sname,age,sex,sdept) 選課關(guān)系sc(s#,c#,grade) 課程關(guān)系c(c#,cname,cdept,tname) 在教學(xué)數(shù)據(jù)庫(kù)中,要求s中的元 組滿足條件:男生年齡在1535 歲之間,女生年齡在1530歲之 間 。對(duì)應(yīng)的語(yǔ)句為: check(age = 15 and ((sex =男 and age = 35) or (sex =女 and age newtuple.grade) update sc set grade = oldtuple.grade where c# = newtuple.

31、c# 50 主要內(nèi)容 n7.1 系統(tǒng)目錄 n7.2 事務(wù) n7.3 數(shù)據(jù)庫(kù)的恢復(fù) n7.4 數(shù)據(jù)庫(kù)的并發(fā)控制 n7.5 并發(fā)事務(wù)的可串行化和可恢復(fù)性 n7.6 數(shù)據(jù)庫(kù)的完整性 n7.7 7.7 數(shù)據(jù)庫(kù)的安全性數(shù)據(jù)庫(kù)的安全性 n小結(jié) 51 數(shù)據(jù)庫(kù)安全性級(jí)別 n什么是數(shù)據(jù)庫(kù)的安全性:保護(hù)數(shù)據(jù)庫(kù),防止不合法的 使用,以免數(shù)據(jù)的泄密、更改或破壞。 n安全性級(jí)別 n環(huán)境級(jí):計(jì)算機(jī)系統(tǒng)的機(jī)房和設(shè)備應(yīng)加以保護(hù),防止有人進(jìn) 行物理破壞。 n職員級(jí):工作人員應(yīng)清正廉潔,正確授予用戶訪問數(shù)據(jù)庫(kù)的 權(quán)限。 nos級(jí):應(yīng)防止未經(jīng)授權(quán)的用戶從os處著手訪問數(shù)據(jù)庫(kù)。 n網(wǎng)絡(luò)級(jí):由于大多數(shù)dbs都允許用戶通過網(wǎng)絡(luò)進(jìn)行遠(yuǎn)程訪

32、問, 因此網(wǎng)絡(luò)軟件內(nèi)部的安全性是很重要的。 ndbs級(jí):dbs的職責(zé)是檢查用戶的身份是否合法及使用數(shù)據(jù)庫(kù) 的權(quán)限是否正確。 低 高 52 (1)讀權(quán)限:允許用戶讀數(shù)據(jù), 但不能改數(shù)據(jù)。 插入權(quán)限:允許用戶插入 新數(shù)據(jù),但不能改數(shù)據(jù)。 修改權(quán)限:允許用戶改數(shù) 據(jù),但不能刪除數(shù)據(jù)。 刪除權(quán)限 :允許用戶刪除 數(shù)據(jù) 權(quán)限 n訪問數(shù)據(jù)的權(quán)限 n修改數(shù)據(jù)庫(kù)模式的權(quán)限 n索引(index)權(quán)限:允 許用戶創(chuàng)建和刪除索引。 n資源(resourse)權(quán)限: 允許用戶創(chuàng)建新的關(guān)系。 n修改(alteration)權(quán)限: 允許用戶在關(guān)系結(jié)構(gòu)中 加入或刪除屬性。 n撤消(drop)權(quán)限:允 許用戶撤消關(guān)系。 53 dba u1 u2 u3 權(quán)限的授予和回收 dba u1u4 u2u5 u3 權(quán)限轉(zhuǎn)授圖 一個(gè)用戶擁有權(quán)限 的充分必要條件是 在權(quán)限圖中從根結(jié)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論