《數(shù)據(jù)庫(kù)管理》PPT課件
《《數(shù)據(jù)庫(kù)管理》PPT課件》由會(huì)員分享,可在線閱讀,更多相關(guān)《《數(shù)據(jù)庫(kù)管理》PPT課件(60頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、DataBaseDataBase魏英魏英 tutor_ 7952616 第七章第七章 數(shù)據(jù)庫(kù)管理數(shù)據(jù)庫(kù)管理教學(xué)內(nèi)容教學(xué)內(nèi)容理解事務(wù)的概念及其處理模型理解事務(wù)的概念及其處理模型熟悉數(shù)據(jù)庫(kù)系統(tǒng)中并發(fā)控制的基本方法熟悉數(shù)據(jù)庫(kù)系統(tǒng)中并發(fā)控制的基本方法理解數(shù)據(jù)庫(kù)故障恢復(fù)策略理解數(shù)據(jù)庫(kù)故障恢復(fù)策略掌握數(shù)據(jù)庫(kù)完整性約束和安全性控制的實(shí)現(xiàn)方法掌握數(shù)據(jù)庫(kù)完整性約束和安全性控制的實(shí)現(xiàn)方法教學(xué)重點(diǎn)教學(xué)重點(diǎn)事務(wù)處理模型事務(wù)處理模型加鎖協(xié)議加鎖協(xié)議完整性約束完整性約束教學(xué)難點(diǎn)教學(xué)難點(diǎn)并發(fā)操作并發(fā)操作DataBaseDataBase魏英魏英 tutor_ 7952616 事務(wù)事務(wù)定義定義事務(wù)事務(wù)(Transaction)
2、是是DBMS的執(zhí)行單位,由有限的執(zhí)行單位,由有限的數(shù)據(jù)庫(kù)操作序列組成的數(shù)據(jù)庫(kù)操作序列組成例:銀行轉(zhuǎn)賬業(yè)務(wù)例:銀行轉(zhuǎn)賬業(yè)務(wù)賬號(hào)賬號(hào)姓名姓名余額余額A張三張三800B李四李四400UPDATE 賬戶(hù)賬戶(hù) SET 余額余額=余額余額-100 WHERE 賬號(hào)賬號(hào)=AUPDATE 賬戶(hù)賬戶(hù) SET 余額余額=余額余額+100 WHERE 賬號(hào)賬號(hào)=B700500400事務(wù)事務(wù)DataBaseDataBase魏英魏英 tutor_ 7952616 事務(wù)事務(wù)性質(zhì)性質(zhì)1:原子性原子性(Atomicity)Nothing or All:不允許事務(wù)部分完成不允許事務(wù)部分完成COMMIT語(yǔ)句:提交該事務(wù)對(duì)數(shù)據(jù)庫(kù)的
3、所有修改,使語(yǔ)句:提交該事務(wù)對(duì)數(shù)據(jù)庫(kù)的所有修改,使其成為數(shù)據(jù)庫(kù)中永久的一個(gè)部分,表示一個(gè)事務(wù)成功其成為數(shù)據(jù)庫(kù)中永久的一個(gè)部分,表示一個(gè)事務(wù)成功地結(jié)束地結(jié)束ROLLBACK語(yǔ)句:撤銷(xiāo)該事務(wù)對(duì)數(shù)據(jù)庫(kù)的所有修改,語(yǔ)句:撤銷(xiāo)該事務(wù)對(duì)數(shù)據(jù)庫(kù)的所有修改,將事務(wù)回滾到事務(wù)的起點(diǎn),即全部不執(zhí)行事務(wù)的操作將事務(wù)回滾到事務(wù)的起點(diǎn),即全部不執(zhí)行事務(wù)的操作序列序列由由DBMS的事務(wù)管理子系統(tǒng)實(shí)現(xiàn)的事務(wù)管理子系統(tǒng)實(shí)現(xiàn)DataBaseDataBase魏英魏英 tutor_ 7952616 事務(wù)事務(wù)性質(zhì)性質(zhì)2:一致性一致性(Consistency)事務(wù)對(duì)數(shù)據(jù)庫(kù)的作用應(yīng)使數(shù)據(jù)庫(kù)從一個(gè)事務(wù)對(duì)數(shù)據(jù)庫(kù)的作用應(yīng)使數(shù)據(jù)庫(kù)從一個(gè)一致?tīng)顟B(tài)
4、一致?tīng)顟B(tài)轉(zhuǎn)變轉(zhuǎn)變到另一個(gè)一致?tīng)顟B(tài)到另一個(gè)一致?tīng)顟B(tài)數(shù)據(jù)庫(kù)的一致?tīng)顟B(tài)是指數(shù)據(jù)庫(kù)中的數(shù)據(jù)滿(mǎn)足數(shù)據(jù)庫(kù)的一致?tīng)顟B(tài)是指數(shù)據(jù)庫(kù)中的數(shù)據(jù)滿(mǎn)足完整性約完整性約束束,即數(shù)據(jù)的完整性約束不會(huì)因事務(wù)的執(zhí)行而被破壞,即數(shù)據(jù)的完整性約束不會(huì)因事務(wù)的執(zhí)行而被破壞例如,銀行轉(zhuǎn)賬業(yè)務(wù)的完整性約束條件為轉(zhuǎn)賬前后賬例如,銀行轉(zhuǎn)賬業(yè)務(wù)的完整性約束條件為轉(zhuǎn)賬前后賬號(hào)號(hào)A與與B的余額之和相等的余額之和相等賬號(hào)賬號(hào)姓名姓名余額余額A張三張三800B李四李四400賬號(hào)賬號(hào)姓名姓名余額余額A張三張三700B李四李四400賬號(hào)賬號(hào)姓名姓名余額余額A張三張三700B李四李四500DataBaseDataBase魏英魏英 tutor_ 795261
5、6 事務(wù)事務(wù)性質(zhì)性質(zhì)3:隔離性隔離性(Isolation)如果多個(gè)事務(wù)并發(fā)執(zhí)行,應(yīng)像各個(gè)事務(wù)獨(dú)立執(zhí)行一樣,如果多個(gè)事務(wù)并發(fā)執(zhí)行,應(yīng)像各個(gè)事務(wù)獨(dú)立執(zhí)行一樣,互不干擾互不干擾由由DBMS的并發(fā)控制子系統(tǒng)實(shí)現(xiàn)的并發(fā)控制子系統(tǒng)實(shí)現(xiàn)/*事務(wù)事務(wù)T1*/UPDATE 賬戶(hù)賬戶(hù) SET 余額余額=余額余額-100 WHERE 賬號(hào)賬號(hào)=AUPDATE 賬戶(hù)賬戶(hù) SET 余額余額=余額余額+100 WHERE 賬號(hào)賬號(hào)=B/*事務(wù)事務(wù)T2*/DECLARE S INT,SA INT,SB INTSELECT SA=余額余額 FROM 賬戶(hù)賬戶(hù) WHERE 賬號(hào)賬號(hào)=ASELECT SB=余額余額 FROM 賬
6、戶(hù)賬戶(hù) WHERE 賬號(hào)賬號(hào)=BSET S=SA+SB執(zhí)執(zhí)行行的的時(shí)時(shí)間間順順序序/*事務(wù)事務(wù)T1*/UPDATE 賬戶(hù)賬戶(hù) SET 余額余額=余額余額-100 WHERE 賬號(hào)賬號(hào)=AUPDATE 賬戶(hù)賬戶(hù) SET 余額余額=余額余額+100 WHERE 賬號(hào)賬號(hào)=B/*事務(wù)事務(wù)T2*/DECLARE S INT,SA INT,SB INTSELECT SA=余額余額 FROM 賬戶(hù)賬戶(hù) WHERE 賬號(hào)賬號(hào)=ASELECT SB=余額余額 FROM 賬戶(hù)賬戶(hù) WHERE 賬號(hào)賬號(hào)=BSET S=SA+SBDataBaseDataBase魏英魏英 tutor_ 7952616 事務(wù)事務(wù)性質(zhì)性
7、質(zhì)4:持久性持久性(Durability)一個(gè)事務(wù)成功執(zhí)行后,對(duì)數(shù)據(jù)庫(kù)的影響應(yīng)是永久的,一個(gè)事務(wù)成功執(zhí)行后,對(duì)數(shù)據(jù)庫(kù)的影響應(yīng)是永久的,即使是數(shù)據(jù)庫(kù)因故障被破壞,即使是數(shù)據(jù)庫(kù)因故障被破壞,DBMS也應(yīng)該也應(yīng)該能夠恢復(fù)能夠恢復(fù)由由DBMS的事務(wù)管理子系統(tǒng)和恢復(fù)管理子系統(tǒng)配合實(shí)的事務(wù)管理子系統(tǒng)和恢復(fù)管理子系統(tǒng)配合實(shí)現(xiàn)現(xiàn)DataBaseDataBase魏英魏英 tutor_ 7952616 事務(wù)處理模型事務(wù)處理模型ANSI/ISO SQL事務(wù)模型事務(wù)模型規(guī)定用戶(hù)或程序規(guī)定用戶(hù)或程序始終處于事務(wù)處理狀態(tài)始終處于事務(wù)處理狀態(tài),用戶(hù)或程序,用戶(hù)或程序執(zhí)行的第一個(gè)執(zhí)行的第一個(gè)SQL語(yǔ)句是一個(gè)事務(wù)的開(kāi)始,當(dāng)遇到
8、以語(yǔ)句是一個(gè)事務(wù)的開(kāi)始,當(dāng)遇到以下四種情況之一時(shí),該事務(wù)將結(jié)束下四種情況之一時(shí),該事務(wù)將結(jié)束執(zhí)行執(zhí)行COMMIT語(yǔ)句,當(dāng)前事務(wù)成功結(jié)束,立即開(kāi)始一個(gè)新事語(yǔ)句,當(dāng)前事務(wù)成功結(jié)束,立即開(kāi)始一個(gè)新事務(wù)務(wù)執(zhí)行執(zhí)行ROLLBACK語(yǔ)句,當(dāng)前事務(wù)異常結(jié)束,立即開(kāi)始一個(gè)語(yǔ)句,當(dāng)前事務(wù)異常結(jié)束,立即開(kāi)始一個(gè)新事務(wù)新事務(wù)對(duì)于對(duì)于SQL程序而言,程序而言,程序正常結(jié)束程序正常結(jié)束表示當(dāng)前事務(wù)也結(jié)束了,表示當(dāng)前事務(wù)也結(jié)束了,無(wú)新事務(wù)開(kāi)始無(wú)新事務(wù)開(kāi)始對(duì)于對(duì)于SQL程序而言,程序而言,程序異常結(jié)束程序異常結(jié)束表示當(dāng)前事務(wù)也結(jié)束了,表示當(dāng)前事務(wù)也結(jié)束了,無(wú)新事務(wù)開(kāi)始無(wú)新事務(wù)開(kāi)始DataBaseDataBase魏英魏英 t
9、utor_ 7952616 事務(wù)處理模型事務(wù)處理模型SQL SERVER的事務(wù)處理模型的事務(wù)處理模型在編寫(xiě)程序時(shí),應(yīng)把事務(wù)用事務(wù)開(kāi)始語(yǔ)句和結(jié)束語(yǔ)句在編寫(xiě)程序時(shí),應(yīng)把事務(wù)用事務(wù)開(kāi)始語(yǔ)句和結(jié)束語(yǔ)句加以限定加以限定BEGIN TRANSACTION語(yǔ)句表示一個(gè)事務(wù)的開(kāi)始語(yǔ)句表示一個(gè)事務(wù)的開(kāi)始COMMIT TRANSACTION語(yǔ)句表示一個(gè)事務(wù)的成功結(jié)語(yǔ)句表示一個(gè)事務(wù)的成功結(jié)束,但不能自動(dòng)開(kāi)始一個(gè)新事務(wù)束,但不能自動(dòng)開(kāi)始一個(gè)新事務(wù)可通過(guò)可通過(guò)SAVETRANSACTION語(yǔ)句在事務(wù)中間建立一語(yǔ)句在事務(wù)中間建立一個(gè)個(gè)保存點(diǎn)保存點(diǎn)(Savepoint)通過(guò)通過(guò)ROLLBACKTRANSACTION語(yǔ)句可以
10、該事務(wù)所語(yǔ)句可以該事務(wù)所有的更新操作,回滾到事務(wù)寢狀態(tài)(如果設(shè)有保存點(diǎn),有的更新操作,回滾到事務(wù)寢狀態(tài)(如果設(shè)有保存點(diǎn),將只放棄保存點(diǎn)之后的更新操作,回滾到保存點(diǎn)的狀將只放棄保存點(diǎn)之后的更新操作,回滾到保存點(diǎn)的狀態(tài))態(tài))DataBaseDataBase魏英魏英 tutor_ 7952616 事務(wù)狀態(tài)變遷圖事務(wù)狀態(tài)變遷圖活動(dòng)狀態(tài)活動(dòng)狀態(tài)讀讀/寫(xiě)寫(xiě)局部提交局部提交狀態(tài)狀態(tài)提交狀態(tài)提交狀態(tài)失敗狀態(tài)失敗狀態(tài)異常中止異常中止?fàn)顟B(tài)狀態(tài)事務(wù)開(kāi)始執(zhí)行后,事務(wù)開(kāi)始執(zhí)行后,立即進(jìn)入立即進(jìn)入活動(dòng)狀態(tài)活動(dòng)狀態(tài)在在活動(dòng)狀態(tài)活動(dòng)狀態(tài),事務(wù)將執(zhí)行對(duì)數(shù)據(jù)庫(kù)的,事務(wù)將執(zhí)行對(duì)數(shù)據(jù)庫(kù)的讀讀/寫(xiě)操作寫(xiě)操作,但寫(xiě)操作的結(jié)果并不立即寫(xiě)到
11、磁盤(pán),可能暫存但寫(xiě)操作的結(jié)果并不立即寫(xiě)到磁盤(pán),可能暫存在在緩沖區(qū)緩沖區(qū)中中事務(wù)的最后一個(gè)語(yǔ)句執(zhí)行之后,進(jìn)入事務(wù)的最后一個(gè)語(yǔ)句執(zhí)行之后,進(jìn)入局部提交狀態(tài)局部提交狀態(tài),事務(wù)并未真正結(jié)束,事務(wù)并未真正結(jié)束,對(duì)數(shù)據(jù)庫(kù)的修改可能還在緩沖區(qū)中對(duì)數(shù)據(jù)庫(kù)的修改可能還在緩沖區(qū)中處于處于活動(dòng)狀態(tài)活動(dòng)狀態(tài)的事的事務(wù)沒(méi)有達(dá)到最后一務(wù)沒(méi)有達(dá)到最后一個(gè)語(yǔ)句就中止執(zhí)行,個(gè)語(yǔ)句就中止執(zhí)行,將進(jìn)入將進(jìn)入失敗狀態(tài)失敗狀態(tài)處于處于局部提交狀態(tài)局部提交狀態(tài)的事務(wù)遇到故障也的事務(wù)遇到故障也進(jìn)入進(jìn)入失敗狀態(tài)失敗狀態(tài)處于處于失敗狀態(tài)失敗狀態(tài)的事務(wù)可能已對(duì)磁盤(pán)中的事務(wù)可能已對(duì)磁盤(pán)中的數(shù)據(jù)進(jìn)行了一部分修改,為保證事的數(shù)據(jù)進(jìn)行了一部分修改,為保
12、證事務(wù)的原子性,事務(wù)將進(jìn)入務(wù)的原子性,事務(wù)將進(jìn)入異常中止?fàn)町惓V兄範(fàn)顟B(tài)態(tài),由,由DBMS的恢復(fù)子系統(tǒng)決定重新啟的恢復(fù)子系統(tǒng)決定重新啟動(dòng)事務(wù)或取消事務(wù)動(dòng)事務(wù)或取消事務(wù)事務(wù)進(jìn)入局部提交狀態(tài)后,事務(wù)進(jìn)入局部提交狀態(tài)后,DBMS的并發(fā)控制子的并發(fā)控制子系統(tǒng)將檢查該事務(wù)與并發(fā)事務(wù)是否發(fā)生干擾現(xiàn)系統(tǒng)將檢查該事務(wù)與并發(fā)事務(wù)是否發(fā)生干擾現(xiàn)象,通過(guò)檢查后,系統(tǒng)執(zhí)行提交操作,把對(duì)數(shù)象,通過(guò)檢查后,系統(tǒng)執(zhí)行提交操作,把對(duì)數(shù)據(jù)庫(kù)的修改全部寫(xiě)到磁盤(pán)上,并通知系統(tǒng),事?lián)?kù)的修改全部寫(xiě)到磁盤(pán)上,并通知系統(tǒng),事務(wù)成功結(jié)束,事務(wù)進(jìn)入務(wù)成功結(jié)束,事務(wù)進(jìn)入提交狀態(tài)提交狀態(tài)DataBaseDataBase魏英魏英 tutor_ 79
13、52616 SQLSERVER事務(wù)處理實(shí)例事務(wù)處理實(shí)例事務(wù)處理后事務(wù)處理后數(shù)據(jù)庫(kù)狀態(tài)數(shù)據(jù)庫(kù)狀態(tài)事務(wù)處理前事務(wù)處理前數(shù)據(jù)庫(kù)狀態(tài)數(shù)據(jù)庫(kù)狀態(tài)BEGINTRANSACTIONINSERTDELETESAVETRANSACTIONAUPDATEDELETESAVETRANSACTIONBUPDATEINSERTROLLBACKB保存點(diǎn)保存點(diǎn)AUPDATEDELETECOMMITTRANSACTION保存點(diǎn)保存點(diǎn)BDataBaseDataBase魏英魏英 tutor_ 7952616 并發(fā)操作并發(fā)操作串行訪問(wèn)串行訪問(wèn)事務(wù)順序執(zhí)行,一個(gè)事務(wù)完全結(jié)束后,另一個(gè)事務(wù)才事務(wù)順序執(zhí)行,一個(gè)事務(wù)完全結(jié)束后,另一個(gè)事務(wù)
14、才開(kāi)始開(kāi)始并發(fā)訪問(wèn)并發(fā)訪問(wèn)DBMS同時(shí)接納多個(gè)事務(wù)的執(zhí)行方式同時(shí)接納多個(gè)事務(wù)的執(zhí)行方式交叉并發(fā)交叉并發(fā):在單:在單CPU系統(tǒng)中,同一時(shí)間只能有一個(gè)事系統(tǒng)中,同一時(shí)間只能有一個(gè)事務(wù)占有務(wù)占有CPU,各個(gè)事務(wù)交叉使用,各個(gè)事務(wù)交叉使用CPU同時(shí)并發(fā)同時(shí)并發(fā):在多:在多CPU系統(tǒng)中,可以允許多個(gè)事務(wù)同時(shí)系統(tǒng)中,可以允許多個(gè)事務(wù)同時(shí)占有占有CPUDataBaseDataBase魏英魏英 tutor_ 7952616 并發(fā)操作并發(fā)操作優(yōu)點(diǎn)優(yōu)點(diǎn)提高系統(tǒng)資源的利用率和吞吐率提高系統(tǒng)資源的利用率和吞吐率改善短事務(wù)的響應(yīng)時(shí)間改善短事務(wù)的響應(yīng)時(shí)間缺點(diǎn)缺點(diǎn)多個(gè)事務(wù)并發(fā)地存取同一數(shù)據(jù),可能會(huì)破壞數(shù)據(jù)庫(kù)的多個(gè)事務(wù)并發(fā)地
15、存取同一數(shù)據(jù),可能會(huì)破壞數(shù)據(jù)庫(kù)的完整性,產(chǎn)生數(shù)據(jù)不一致問(wèn)題完整性,產(chǎn)生數(shù)據(jù)不一致問(wèn)題DataBaseDataBase魏英魏英 tutor_ 7952616 并發(fā)操作引起的問(wèn)題并發(fā)操作引起的問(wèn)題問(wèn)題問(wèn)題1:丟失更新丟失更新(Lost Update)例:在一個(gè)多用戶(hù)訂單系統(tǒng)中,甲、乙兩個(gè)業(yè)務(wù)員并例:在一個(gè)多用戶(hù)訂單系統(tǒng)中,甲、乙兩個(gè)業(yè)務(wù)員并發(fā)地從產(chǎn)品表中存取發(fā)地從產(chǎn)品表中存取41004號(hào)產(chǎn)品的庫(kù)存數(shù)量號(hào)產(chǎn)品的庫(kù)存數(shù)量(假設(shè)假設(shè)該產(chǎn)品的初始庫(kù)存數(shù)量為該產(chǎn)品的初始庫(kù)存數(shù)量為139)時(shí)間時(shí)間事務(wù)事務(wù)T1(甲甲)庫(kù)存庫(kù)存數(shù)量數(shù)量事務(wù)事務(wù)T2(乙乙)t0DECLARE X INTSELECT X=庫(kù)存數(shù)量庫(kù)
16、存數(shù)量 FROM 產(chǎn)品產(chǎn)品 WHERE 產(chǎn)品號(hào)產(chǎn)品號(hào)=41004139t1DECLARE Y INTSELECT Y=庫(kù)存數(shù)量庫(kù)存數(shù)量 FROM 產(chǎn)品產(chǎn)品 WHERE 產(chǎn)品號(hào)產(chǎn)品號(hào)=41004t2SET X=X-100t3SET Y=Y-125t4UPDATE 產(chǎn)品產(chǎn)品 SET 庫(kù)存數(shù)量庫(kù)存數(shù)量=X WHERE 產(chǎn)品號(hào)產(chǎn)品號(hào)=4100439t514UPDATE 產(chǎn)品產(chǎn)品 SET 庫(kù)存數(shù)量庫(kù)存數(shù)量=Y WHERE 產(chǎn)品號(hào)產(chǎn)品號(hào)=41004t6SELECT X=庫(kù)存數(shù)量庫(kù)存數(shù)量 FROM 產(chǎn)品產(chǎn)品 WHERE 產(chǎn)品號(hào)產(chǎn)品號(hào)=41004寫(xiě)寫(xiě)沖突寫(xiě)寫(xiě)沖突DataBaseDataBase魏英魏英 tut
17、or_ 7952616 并發(fā)操作引起的問(wèn)題并發(fā)操作引起的問(wèn)題問(wèn)題問(wèn)題2:讀臟數(shù)據(jù)讀臟數(shù)據(jù)(Dirty Read)時(shí)間時(shí)間事務(wù)事務(wù)T1(甲甲)庫(kù)存庫(kù)存數(shù)量數(shù)量事務(wù)事務(wù)T2(乙乙)t0DECLARE X INTSELECT X=庫(kù)存數(shù)量庫(kù)存數(shù)量 FROM 產(chǎn)品產(chǎn)品 WHERE 產(chǎn)品號(hào)產(chǎn)品號(hào)=41004139t1SET X=X-100t2UPDATE 產(chǎn)品產(chǎn)品 SET 庫(kù)存數(shù)量庫(kù)存數(shù)量=X WHERE 產(chǎn)品號(hào)產(chǎn)品號(hào)=4100439t3DECLARE Y INTSELECT Y=庫(kù)存數(shù)量庫(kù)存數(shù)量 FROM 產(chǎn)品產(chǎn)品 WHERE 產(chǎn)品號(hào)產(chǎn)品號(hào)=41004t4SET Y=Y-125t5ROLLBACK T
18、RANSACTION139t6SELECT X=庫(kù)存數(shù)量庫(kù)存數(shù)量 FROM 產(chǎn)品產(chǎn)品 WHERE 產(chǎn)品號(hào)產(chǎn)品號(hào)=41004臟數(shù)據(jù)臟數(shù)據(jù)在數(shù)據(jù)庫(kù)技術(shù)中,在數(shù)據(jù)庫(kù)技術(shù)中,將未提交隨后又將未提交隨后又撤銷(xiāo)的數(shù)據(jù)稱(chēng)為撤銷(xiāo)的數(shù)據(jù)稱(chēng)為臟數(shù)據(jù)臟數(shù)據(jù)讀寫(xiě)沖突讀寫(xiě)沖突DataBaseDataBase魏英魏英 tutor_ 7952616 并發(fā)操作引起的問(wèn)題并發(fā)操作引起的問(wèn)題問(wèn)題問(wèn)題3:不可重復(fù)讀不可重復(fù)讀(Unrepeatable Read)時(shí)間時(shí)間事務(wù)事務(wù)T1(甲甲)庫(kù)存庫(kù)存數(shù)量數(shù)量事務(wù)事務(wù)T2(乙乙)t0139SELECT 庫(kù)存數(shù)量庫(kù)存數(shù)量 FROM 產(chǎn)品產(chǎn)品 WHERE 產(chǎn)品號(hào)產(chǎn)品號(hào)=41004t1UPD
19、ATE 產(chǎn)品產(chǎn)品 SET 庫(kù)存數(shù)量庫(kù)存數(shù)量=庫(kù)存數(shù)量庫(kù)存數(shù)量-100 WHERE 產(chǎn)品產(chǎn)品號(hào)號(hào)=4100439t2SELECT 庫(kù)存數(shù)量庫(kù)存數(shù)量 FROM 產(chǎn)品產(chǎn)品 WHERE 產(chǎn)品號(hào)產(chǎn)品號(hào)=41004讀寫(xiě)沖突讀寫(xiě)沖突DataBaseDataBase魏英魏英 tutor_ 7952616 并發(fā)操作引起的問(wèn)題并發(fā)操作引起的問(wèn)題總結(jié)總結(jié)并發(fā)操作所引起問(wèn)題的根源來(lái)自對(duì)同一數(shù)據(jù)對(duì)象的寫(xiě)并發(fā)操作所引起問(wèn)題的根源來(lái)自對(duì)同一數(shù)據(jù)對(duì)象的寫(xiě)寫(xiě)沖突或讀寫(xiě)沖突寫(xiě)沖突或讀寫(xiě)沖突問(wèn)題的關(guān)鍵在問(wèn)題的關(guān)鍵在寫(xiě)操作寫(xiě)操作上,上,只讀事務(wù)的并發(fā)操作不會(huì)產(chǎn)只讀事務(wù)的并發(fā)操作不會(huì)產(chǎn)生上述問(wèn)題生上述問(wèn)題DBMS的并發(fā)控制子系統(tǒng)用于解
20、決上述問(wèn)題的并發(fā)控制子系統(tǒng)用于解決上述問(wèn)題并發(fā)控制的基本方法是并發(fā)控制的基本方法是封鎖封鎖DataBaseDataBase魏英魏英 tutor_ 7952616 封鎖技術(shù)封鎖技術(shù)鎖鎖(Lock)一個(gè)與一個(gè)與數(shù)據(jù)項(xiàng)數(shù)據(jù)項(xiàng)相關(guān)的變量,對(duì)可能應(yīng)用于該數(shù)據(jù)項(xiàng)上相關(guān)的變量,對(duì)可能應(yīng)用于該數(shù)據(jù)項(xiàng)上的操作而言,鎖描述了該數(shù)據(jù)項(xiàng)的狀態(tài)的操作而言,鎖描述了該數(shù)據(jù)項(xiàng)的狀態(tài)通常在數(shù)據(jù)庫(kù)中,每個(gè)數(shù)據(jù)項(xiàng)都有一個(gè)鎖通常在數(shù)據(jù)庫(kù)中,每個(gè)數(shù)據(jù)項(xiàng)都有一個(gè)鎖鎖的作用鎖的作用使并發(fā)事務(wù)對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)項(xiàng)的訪問(wèn)能夠同步使并發(fā)事務(wù)對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)項(xiàng)的訪問(wèn)能夠同步鎖的基本用法鎖的基本用法在操作之前先對(duì)數(shù)據(jù)項(xiàng)加鎖在操作之前先對(duì)數(shù)據(jù)項(xiàng)加鎖,以防
21、止用戶(hù)讀取正由其,以防止用戶(hù)讀取正由其他用戶(hù)更改的數(shù)據(jù)項(xiàng)或多個(gè)用戶(hù)同時(shí)更改相同的數(shù)據(jù)他用戶(hù)更改的數(shù)據(jù)項(xiàng)或多個(gè)用戶(hù)同時(shí)更改相同的數(shù)據(jù)項(xiàng)項(xiàng)DataBaseDataBase魏英魏英 tutor_ 7952616 封鎖技術(shù)封鎖技術(shù)排它鎖排它鎖(X鎖鎖,eXclusive lock)如果事務(wù)如果事務(wù)T對(duì)某個(gè)數(shù)據(jù)對(duì)某個(gè)數(shù)據(jù)R實(shí)現(xiàn)了實(shí)現(xiàn)了X鎖,則在鎖,則在T對(duì)數(shù)據(jù)對(duì)數(shù)據(jù)R解解除封鎖之前,不允許其他事務(wù)再對(duì)該數(shù)據(jù)加任何類(lèi)型除封鎖之前,不允許其他事務(wù)再對(duì)該數(shù)據(jù)加任何類(lèi)型的鎖的鎖X鎖有鎖有加鎖加鎖和和解鎖解鎖兩種操作兩種操作如果事務(wù)如果事務(wù)T獲得數(shù)據(jù)獲得數(shù)據(jù)R上的上的X鎖,則鎖,則T既可讀又可寫(xiě)既可讀又可寫(xiě)RX鎖
22、用于鎖用于INSERT、DELETE或或UPDATE等數(shù)據(jù)修改操等數(shù)據(jù)修改操作作DataBaseDataBase魏英魏英 tutor_ 7952616 封鎖技術(shù)封鎖技術(shù)共享鎖共享鎖(S鎖鎖,Shared lock)如果事務(wù)如果事務(wù)T對(duì)某數(shù)據(jù)加上對(duì)某數(shù)據(jù)加上S鎖后,仍允許其他事務(wù)再鎖后,仍允許其他事務(wù)再對(duì)該數(shù)據(jù)加對(duì)該數(shù)據(jù)加S鎖,但在對(duì)該數(shù)據(jù)的所有鎖,但在對(duì)該數(shù)據(jù)的所有S鎖都解除之鎖都解除之前,決不允許任何事務(wù)對(duì)該數(shù)據(jù)加前,決不允許任何事務(wù)對(duì)該數(shù)據(jù)加X(jué)鎖鎖S鎖有鎖有加鎖加鎖、解鎖解鎖和和升級(jí)升級(jí)三種操作三種操作如果事務(wù)如果事務(wù)T獲得數(shù)據(jù)獲得數(shù)據(jù)R上的上的S鎖,則鎖,則T可讀但不可寫(xiě)可讀但不可寫(xiě)RS
23、鎖用于鎖用于SELECT等非更新數(shù)據(jù)的操作等非更新數(shù)據(jù)的操作DataBaseDataBase魏英魏英 tutor_ 7952616 封鎖技術(shù)封鎖技術(shù)封鎖類(lèi)型的相容矩陣封鎖類(lèi)型的相容矩陣無(wú)鎖無(wú)鎖S鎖鎖X鎖鎖S鎖鎖YYNX鎖鎖YNN其他事務(wù)擁有的鎖其他事務(wù)擁有的鎖加鎖加鎖請(qǐng)求請(qǐng)求Y相容的請(qǐng)求,相容的請(qǐng)求,N不相容的請(qǐng)求不相容的請(qǐng)求DataBaseDataBase魏英魏英 tutor_ 7952616 封鎖協(xié)議封鎖協(xié)議一級(jí)封鎖協(xié)議一級(jí)封鎖協(xié)議事務(wù)事務(wù)T在在修改修改數(shù)據(jù)數(shù)據(jù)R之前必須先對(duì)其加之前必須先對(duì)其加X(jué)鎖鎖,直到,直到事務(wù)事務(wù)結(jié)束結(jié)束才釋放才釋放事務(wù)結(jié)束包括正常結(jié)束事務(wù)結(jié)束包括正常結(jié)束(COMM
24、IT)和非正常結(jié)束和非正常結(jié)束(ROLLBACK)一級(jí)封鎖協(xié)議一級(jí)封鎖協(xié)議可防止丟失更新可防止丟失更新,并保證事務(wù),并保證事務(wù)T是可恢是可恢復(fù)的復(fù)的在一級(jí)封鎖協(xié)議中,如果僅僅是讀數(shù)據(jù)不對(duì)其進(jìn)行修在一級(jí)封鎖協(xié)議中,如果僅僅是讀數(shù)據(jù)不對(duì)其進(jìn)行修改,是不需要加鎖的,所以它改,是不需要加鎖的,所以它不能保證可重復(fù)讀和不不能保證可重復(fù)讀和不讀臟數(shù)據(jù)讀臟數(shù)據(jù)DataBaseDataBase魏英魏英 tutor_ 7952616 封鎖協(xié)議封鎖協(xié)議T1T2讀讀A16讀讀A16AA1寫(xiě)回寫(xiě)回A15AA1寫(xiě)回寫(xiě)回A15T1T2XLOCKA獲得獲得讀讀A16XLOCKAAA1等待等待寫(xiě)回寫(xiě)回A15等待等待COMMI
25、T等待等待UNLOCKA等待等待獲得獲得XLOCKA讀讀A15AA1寫(xiě)回寫(xiě)回A14COMMITUNLOCKA沒(méi)有丟失更新沒(méi)有丟失更新DataBaseDataBase魏英魏英 tutor_ 7952616 T1T2XLOCKC獲得獲得讀讀C100CC2寫(xiě)回寫(xiě)回C200讀讀C200ROLLBACKUNLOCKC讀臟數(shù)據(jù)讀臟數(shù)據(jù)DataBaseDataBase魏英魏英 tutor_ 7952616 T1T2讀讀A50讀讀B100求和求和150XLOCKB獲得獲得讀讀B100BB2寫(xiě)回寫(xiě)回B200COMMITUNLOCKB讀讀A50讀讀B200求和求和250COMMIT不可重復(fù)讀不可重復(fù)讀DataBa
26、seDataBase魏英魏英 tutor_ 7952616 封鎖協(xié)議封鎖協(xié)議二級(jí)封鎖協(xié)議二級(jí)封鎖協(xié)議一級(jí)封鎖協(xié)議加上事務(wù)一級(jí)封鎖協(xié)議加上事務(wù)T在在讀取讀取數(shù)據(jù)數(shù)據(jù)R之前必須先對(duì)之前必須先對(duì)其加其加S鎖鎖,讀完讀完后即可釋放后即可釋放S鎖鎖二級(jí)封鎖協(xié)議除防止丟失更新外,還可進(jìn)一步二級(jí)封鎖協(xié)議除防止丟失更新外,還可進(jìn)一步防止讀防止讀臟數(shù)據(jù)臟數(shù)據(jù)在二級(jí)封鎖協(xié)議中,由于讀完數(shù)據(jù)后即可釋放在二級(jí)封鎖協(xié)議中,由于讀完數(shù)據(jù)后即可釋放S鎖,鎖,所以它所以它不能保證可重復(fù)讀不能保證可重復(fù)讀DataBaseDataBase魏英魏英 tutor_ 7952616 T1T2XLOCKC獲得獲得讀讀C100CC2寫(xiě)回寫(xiě)
27、回C200SLOCKCROLLBACK等待等待UNLOCKC等待等待獲得獲得SLOCKC讀讀C100COMMITUNLOCKC不讀臟數(shù)據(jù)不讀臟數(shù)據(jù)DataBaseDataBase魏英魏英 tutor_ 7952616 T1T2SLOCKA,B獲得獲得讀讀A50,B100UNLOCKA,B求和求和150XLOCKB獲得獲得讀讀B100BB2寫(xiě)回寫(xiě)回B200COMMIT,UNLOCK BSLOCKA,B獲得獲得讀讀A50,B200UNLOCKA,B求和求和250不可重復(fù)讀不可重復(fù)讀DataBaseDataBase魏英魏英 tutor_ 7952616 封鎖協(xié)議封鎖協(xié)議三級(jí)封鎖協(xié)議三級(jí)封鎖協(xié)議一級(jí)封
28、鎖協(xié)議加上事務(wù)一級(jí)封鎖協(xié)議加上事務(wù)T在讀取數(shù)據(jù)在讀取數(shù)據(jù)R之前必須先對(duì)之前必須先對(duì)其加其加S鎖,直到鎖,直到事務(wù)結(jié)束事務(wù)結(jié)束釋放釋放三級(jí)封鎖協(xié)議除了防止丟失更新和不讀臟數(shù)據(jù)外,還三級(jí)封鎖協(xié)議除了防止丟失更新和不讀臟數(shù)據(jù)外,還進(jìn)一步進(jìn)一步防止了不可重復(fù)讀防止了不可重復(fù)讀DataBaseDataBase魏英魏英 tutor_ 7952616 T1T2SLOCKA,B獲得獲得讀讀A50,B100求和求和150XLOCKB等待等待讀讀A50,B100等待等待求和求和150等待等待COMMIT等待等待UNLOCKA,B等待等待獲得獲得XLOCKB讀讀B100BB2寫(xiě)回寫(xiě)回B200COMMIT,UNLOC
29、K B可重復(fù)讀可重復(fù)讀DataBaseDataBase魏英魏英 tutor_ 7952616 封鎖協(xié)議封鎖協(xié)議上述三種封鎖協(xié)議的主要區(qū)別在于什么操作需要上述三種封鎖協(xié)議的主要區(qū)別在于什么操作需要申請(qǐng)封鎖,以及何時(shí)釋放鎖(即持鎖時(shí)間)申請(qǐng)封鎖,以及何時(shí)釋放鎖(即持鎖時(shí)間)X鎖鎖S鎖鎖一致性保證一致性保證操作結(jié)操作結(jié)束釋放束釋放事務(wù)結(jié)事務(wù)結(jié)束釋放束釋放操作結(jié)操作結(jié)束釋放束釋放事務(wù)結(jié)事務(wù)結(jié)束釋放束釋放不丟失不丟失更新更新不讀臟不讀臟數(shù)據(jù)數(shù)據(jù)可重復(fù)可重復(fù)讀讀一級(jí)封一級(jí)封鎖協(xié)議鎖協(xié)議 二級(jí)封二級(jí)封鎖協(xié)議鎖協(xié)議 三級(jí)封三級(jí)封鎖協(xié)議鎖協(xié)議 DataBaseDataBase魏英魏英 tutor_ 795261
30、6 封鎖帶來(lái)的問(wèn)題封鎖帶來(lái)的問(wèn)題問(wèn)題問(wèn)題1:活鎖活鎖問(wèn)題問(wèn)題系統(tǒng)可能使某個(gè)事務(wù)永遠(yuǎn)處于等待狀態(tài),得不到封鎖系統(tǒng)可能使某個(gè)事務(wù)永遠(yuǎn)處于等待狀態(tài),得不到封鎖的機(jī)會(huì),這種現(xiàn)象稱(chēng)為活鎖的機(jī)會(huì),這種現(xiàn)象稱(chēng)為活鎖(Live Lock)T1T2T3T4LOCK R.UNLOCK RLOCK R等待等待等待等待等待等待等待等待等待等待等待等待等待等待LOCK R等待等待LOCK RUNLOCK RLOCK R等待等待等待等待等待等待LOCK R.DataBaseDataBase魏英魏英 tutor_ 7952616 封鎖帶來(lái)的問(wèn)題封鎖帶來(lái)的問(wèn)題問(wèn)題問(wèn)題1:活鎖活鎖問(wèn)題問(wèn)題避免活鎖的一種簡(jiǎn)單方法是采用先來(lái)先服務(wù)
31、避免活鎖的一種簡(jiǎn)單方法是采用先來(lái)先服務(wù)(FCFS,First Come First Serve)的策略,即的策略,即當(dāng)多個(gè)事務(wù)請(qǐng)求同一數(shù)據(jù)對(duì)象時(shí),封鎖子系統(tǒng)按請(qǐng)求當(dāng)多個(gè)事務(wù)請(qǐng)求同一數(shù)據(jù)對(duì)象時(shí),封鎖子系統(tǒng)按請(qǐng)求的先后次序?qū)κ聞?wù)排隊(duì),數(shù)據(jù)對(duì)象上的鎖一旦釋放就的先后次序?qū)κ聞?wù)排隊(duì),數(shù)據(jù)對(duì)象上的鎖一旦釋放就批準(zhǔn)申請(qǐng)隊(duì)列中的第批準(zhǔn)申請(qǐng)隊(duì)列中的第1個(gè)事務(wù)獲得鎖個(gè)事務(wù)獲得鎖如果事務(wù)有如果事務(wù)有優(yōu)先級(jí)優(yōu)先級(jí),對(duì)于優(yōu)先級(jí)低的事務(wù),即使排隊(duì),對(duì)于優(yōu)先級(jí)低的事務(wù),即使排隊(duì)也很難輪上封鎖機(jī)會(huì),此時(shí)可采用也很難輪上封鎖機(jī)會(huì),此時(shí)可采用升級(jí)升級(jí)方法解決,即方法解決,即當(dāng)一個(gè)事務(wù)等待若干時(shí)間后,如果還輪不上封鎖,就當(dāng)一個(gè)事
32、務(wù)等待若干時(shí)間后,如果還輪不上封鎖,就提高其優(yōu)先級(jí)提高其優(yōu)先級(jí)DataBaseDataBase魏英魏英 tutor_ 7952616 封鎖帶來(lái)的問(wèn)題封鎖帶來(lái)的問(wèn)題問(wèn)題問(wèn)題2:死鎖死鎖問(wèn)題問(wèn)題系統(tǒng)中有兩個(gè)或兩個(gè)以上事務(wù)都處于等待狀態(tài),并且系統(tǒng)中有兩個(gè)或兩個(gè)以上事務(wù)都處于等待狀態(tài),并且每個(gè)事務(wù)都在等待其中另一個(gè)事務(wù)解除封鎖,它才能每個(gè)事務(wù)都在等待其中另一個(gè)事務(wù)解除封鎖,它才能繼續(xù)執(zhí)行下去,結(jié)果造成任何一個(gè)事務(wù)都無(wú)法繼續(xù)執(zhí)繼續(xù)執(zhí)行下去,結(jié)果造成任何一個(gè)事務(wù)都無(wú)法繼續(xù)執(zhí)行,這種現(xiàn)象稱(chēng)系統(tǒng)進(jìn)入了死鎖行,這種現(xiàn)象稱(chēng)系統(tǒng)進(jìn)入了死鎖(Dead Lock)狀態(tài)狀態(tài)T1T2LOCKR1獲得獲得LOCKR2獲得獲得
33、LOCKR2等待等待LOCKR1等待等待等待等待DataBaseDataBase魏英魏英 tutor_ 7952616 封鎖帶來(lái)的問(wèn)題封鎖帶來(lái)的問(wèn)題預(yù)防死鎖預(yù)防死鎖方法一:方法一:一次性封鎖法一次性封鎖法每個(gè)事務(wù)必須一次將所有要使用的數(shù)據(jù)全部加鎖,否則就每個(gè)事務(wù)必須一次將所有要使用的數(shù)據(jù)全部加鎖,否則就不能繼續(xù)執(zhí)行不能繼續(xù)執(zhí)行缺點(diǎn)缺點(diǎn)1:擴(kuò)大封鎖范圍,降低系統(tǒng)并發(fā)度:擴(kuò)大封鎖范圍,降低系統(tǒng)并發(fā)度缺點(diǎn)缺點(diǎn)2:很難事先精確確定每個(gè)事務(wù)需要封鎖的數(shù)據(jù)對(duì)象:很難事先精確確定每個(gè)事務(wù)需要封鎖的數(shù)據(jù)對(duì)象方法二:方法二:順序封鎖法順序封鎖法預(yù)先對(duì)數(shù)據(jù)對(duì)象規(guī)定一個(gè)封鎖順序,所有事務(wù)都按照這個(gè)預(yù)先對(duì)數(shù)據(jù)對(duì)象規(guī)定
34、一個(gè)封鎖順序,所有事務(wù)都按照這個(gè)順序?qū)嵭蟹怄i順序?qū)嵭蟹怄i缺點(diǎn)缺點(diǎn)1:數(shù)據(jù)庫(kù)系統(tǒng)中封鎖的數(shù)據(jù)對(duì)象極多且在不斷變化,:數(shù)據(jù)庫(kù)系統(tǒng)中封鎖的數(shù)據(jù)對(duì)象極多且在不斷變化,維護(hù)這些資源的封鎖順序非常困難維護(hù)這些資源的封鎖順序非常困難缺點(diǎn)缺點(diǎn)2:很難事先精確確定每個(gè)事務(wù)需要封鎖的數(shù)據(jù)對(duì)象,:很難事先精確確定每個(gè)事務(wù)需要封鎖的數(shù)據(jù)對(duì)象,也就很難按規(guī)定順序施加封鎖也就很難按規(guī)定順序施加封鎖DataBaseDataBase魏英魏英 tutor_ 7952616 封鎖帶來(lái)的問(wèn)題封鎖帶來(lái)的問(wèn)題預(yù)防死鎖預(yù)防死鎖方法三:一種實(shí)用的方法方法三:一種實(shí)用的方法當(dāng)事務(wù)申請(qǐng)鎖未獲批準(zhǔn)時(shí),不等待加鎖而是讓一些事務(wù)回當(dāng)事務(wù)申請(qǐng)鎖未獲批
35、準(zhǔn)時(shí),不等待加鎖而是讓一些事務(wù)回滾重新執(zhí)行,從而避免事務(wù)間的循環(huán)等待,進(jìn)而避免死鎖滾重新執(zhí)行,從而避免事務(wù)間的循環(huán)等待,進(jìn)而避免死鎖DataBaseDataBase魏英魏英 tutor_ 7952616 封鎖帶來(lái)的問(wèn)題封鎖帶來(lái)的問(wèn)題死鎖的檢測(cè)與解除死鎖的檢測(cè)與解除方法一:方法一:超時(shí)法超時(shí)法如果一個(gè)事務(wù)的等待時(shí)間超過(guò)了規(guī)定的時(shí)限,就認(rèn)為發(fā)生了死鎖如果一個(gè)事務(wù)的等待時(shí)間超過(guò)了規(guī)定的時(shí)限,就認(rèn)為發(fā)生了死鎖缺點(diǎn)缺點(diǎn)1:可能誤判:可能誤判缺點(diǎn)缺點(diǎn)2:如果時(shí)限設(shè)置過(guò)長(zhǎng),將無(wú)法及時(shí)發(fā)現(xiàn)死鎖:如果時(shí)限設(shè)置過(guò)長(zhǎng),將無(wú)法及時(shí)發(fā)現(xiàn)死鎖方法二:方法二:等待圖法等待圖法并發(fā)控制子系統(tǒng)周期性檢測(cè)事務(wù)等待圖,如果發(fā)現(xiàn)圖中
36、存在回路,則并發(fā)控制子系統(tǒng)周期性檢測(cè)事務(wù)等待圖,如果發(fā)現(xiàn)圖中存在回路,則表示系統(tǒng)中出現(xiàn)了死鎖表示系統(tǒng)中出現(xiàn)了死鎖一旦一旦DBMS的并發(fā)控制子系統(tǒng)檢測(cè)到死鎖,通常采用的解除方的并發(fā)控制子系統(tǒng)檢測(cè)到死鎖,通常采用的解除方法為選擇一個(gè)處理代價(jià)最小的事務(wù),將其撤銷(xiāo),釋放該事務(wù)法為選擇一個(gè)處理代價(jià)最小的事務(wù),將其撤銷(xiāo),釋放該事務(wù)持有的所有鎖,使其他事務(wù)可以繼續(xù)運(yùn)行下去持有的所有鎖,使其他事務(wù)可以繼續(xù)運(yùn)行下去DataBaseDataBase魏英魏英 tutor_ 7952616 并發(fā)調(diào)度并發(fā)調(diào)度事務(wù)的執(zhí)行次序稱(chēng)為事務(wù)的執(zhí)行次序稱(chēng)為調(diào)度調(diào)度(Schedule)如果多個(gè)事務(wù)依次執(zhí)行,則稱(chēng)為事務(wù)的如果多個(gè)事務(wù)依
37、次執(zhí)行,則稱(chēng)為事務(wù)的串行調(diào)度串行調(diào)度(Serial Schedule)如果利用分時(shí)的方法,同時(shí)處理多個(gè)事務(wù),則稱(chēng)如果利用分時(shí)的方法,同時(shí)處理多個(gè)事務(wù),則稱(chēng)為事務(wù)的為事務(wù)的并發(fā)調(diào)度并發(fā)調(diào)度(Concurrent Schedule)事務(wù)的串行調(diào)度的結(jié)果都是正確的,至于按什么事務(wù)的串行調(diào)度的結(jié)果都是正確的,至于按什么次序執(zhí)行,則視外界環(huán)境而定,系統(tǒng)無(wú)法預(yù)料次序執(zhí)行,則視外界環(huán)境而定,系統(tǒng)無(wú)法預(yù)料事務(wù)的并發(fā)調(diào)度有的是正確的,有的則不正確事務(wù)的并發(fā)調(diào)度有的是正確的,有的則不正確DataBaseDataBase魏英魏英 tutor_ 7952616 可串行化可串行化每個(gè)事務(wù)中,語(yǔ)句的先后順序在各種調(diào)度中始
38、終每個(gè)事務(wù)中,語(yǔ)句的先后順序在各種調(diào)度中始終保持一致,在此前提下,如果一個(gè)并發(fā)調(diào)度的執(zhí)保持一致,在此前提下,如果一個(gè)并發(fā)調(diào)度的執(zhí)行結(jié)果與行結(jié)果與某一某一串行調(diào)度的執(zhí)行結(jié)果等價(jià),則認(rèn)為串行調(diào)度的執(zhí)行結(jié)果等價(jià),則認(rèn)為這個(gè)并發(fā)調(diào)度是這個(gè)并發(fā)調(diào)度是正確調(diào)度正確調(diào)度,稱(chēng)為,稱(chēng)為可串行化可串行化的調(diào)度的調(diào)度T1T2SLOCKBY=B(=2)UNLOCKBXLOCKAAY1寫(xiě)回寫(xiě)回A(=3)UNLOCK ASLOCK AX=A(=3)UNLOCK AXLOCK BB=X+1寫(xiě)回寫(xiě)回B(=4)UNLOCK BT1T2SLOCK AX=A(=2)UNLOCK AXLOCK BB=X+1寫(xiě)回寫(xiě)回B(=3)UNLO
39、CK BSLOCKBY=B(=3)UNLOCKBXLOCKAAY1寫(xiě)回寫(xiě)回A(=4)UNLOCK AT1T2SLOCKBY=B(=2)SLOCK AX=A(=2)UNLOCKBUNLOCK AXLOCKAAY1寫(xiě)回寫(xiě)回A(=3)XLOCK BB=X+1寫(xiě)回寫(xiě)回B(=3)UNLOCK AUNLOCK BT1T2SLOCKBY=B(=2)UNLOCKBXLOCKASLOCK AAY1寫(xiě)回寫(xiě)回A(=3)UNLOCK AX=A(=3)UNLOCK AXLOCK BB=X+1寫(xiě)回寫(xiě)回B(=4)UNLOCK BDataBaseDataBase魏英魏英 tutor_ 7952616 兩段鎖協(xié)議兩段鎖協(xié)議所謂
40、所謂兩段鎖協(xié)議兩段鎖協(xié)議(2PL,Two-Phase Locking)是指所有事務(wù)必須分兩個(gè)階段對(duì)數(shù)據(jù)項(xiàng)進(jìn)行加鎖是指所有事務(wù)必須分兩個(gè)階段對(duì)數(shù)據(jù)項(xiàng)進(jìn)行加鎖和解鎖和解鎖增長(zhǎng)階段增長(zhǎng)階段:事務(wù)可以獲得鎖,但不能釋放鎖:事務(wù)可以獲得鎖,但不能釋放鎖(在對(duì)任在對(duì)任何數(shù)據(jù)進(jìn)行讀寫(xiě)操作之前,首先要申請(qǐng)并獲得對(duì)該數(shù)何數(shù)據(jù)進(jìn)行讀寫(xiě)操作之前,首先要申請(qǐng)并獲得對(duì)該數(shù)據(jù)的封鎖據(jù)的封鎖)縮減階段縮減階段:事務(wù)可以釋放鎖,但不能獲得新鎖:事務(wù)可以釋放鎖,但不能獲得新鎖(在釋在釋放一個(gè)封鎖后,事務(wù)不再申請(qǐng)和獲得任何其他鎖放一個(gè)封鎖后,事務(wù)不再申請(qǐng)和獲得任何其他鎖)T1T2SLOCKBY=B(=2)XLOCKASLOCK
41、AAY1寫(xiě)回寫(xiě)回A(=3)UNLOCKBUNLOCK AX=A(=3)XLOCK BB=X+1寫(xiě)回寫(xiě)回B(=4)UNLOCK BUNLOCK AT1T2SLOCKBY=B(=2)UNLOCKBXLOCKASLOCK AAY1寫(xiě)回寫(xiě)回A(=3)UNLOCK AX=A(=3)UNLOCK AXLOCK BB=X+1寫(xiě)回寫(xiě)回B(=4)UNLOCK BDataBaseDataBase魏英魏英 tutor_ 7952616 兩段鎖協(xié)議兩段鎖協(xié)議事務(wù)遵守兩段鎖協(xié)議事務(wù)遵守兩段鎖協(xié)議是可串行化調(diào)度的是可串行化調(diào)度的充充分條件分條件,而不是必要,而不是必要條件條件一次封鎖法遵守兩段一次封鎖法遵守兩段鎖協(xié)議,但
42、兩段鎖協(xié)鎖協(xié)議,但兩段鎖協(xié)議并不要求一次將所議并不要求一次將所有要使用的數(shù)據(jù)全部有要使用的數(shù)據(jù)全部加鎖,因此遵守兩段加鎖,因此遵守兩段鎖協(xié)議的事務(wù)鎖協(xié)議的事務(wù)可能發(fā)可能發(fā)生死鎖生死鎖T1T2SLOCKBY=B(=2)SLOCK AX=A(=2)XLOCKA等待等待XLOCK B等待等待等待等待DataBaseDataBase魏英魏英 tutor_ 7952616 封鎖的粒度封鎖的粒度封鎖對(duì)象的大小稱(chēng)為封鎖的封鎖對(duì)象的大小稱(chēng)為封鎖的粒度粒度(Granularity)封鎖的對(duì)象可以是數(shù)據(jù)庫(kù)、表、行、列等邏輯單元,也封鎖的對(duì)象可以是數(shù)據(jù)庫(kù)、表、行、列等邏輯單元,也可以是頁(yè)、塊等物理單元可以是頁(yè)、塊等
43、物理單元封鎖粒度與系統(tǒng)的并發(fā)度和并發(fā)控制的開(kāi)銷(xiāo)密切相關(guān)封鎖粒度與系統(tǒng)的并發(fā)度和并發(fā)控制的開(kāi)銷(xiāo)密切相關(guān)封鎖粒度越大,封鎖對(duì)象就越少,并發(fā)度就越小,系統(tǒng)開(kāi)銷(xiāo)封鎖粒度越大,封鎖對(duì)象就越少,并發(fā)度就越小,系統(tǒng)開(kāi)銷(xiāo)也越小也越小封鎖粒度越小,封鎖對(duì)象就越多,并發(fā)度就越大,系統(tǒng)開(kāi)銷(xiāo)封鎖粒度越小,封鎖對(duì)象就越多,并發(fā)度就越大,系統(tǒng)開(kāi)銷(xiāo)也越大也越大現(xiàn)代大型數(shù)據(jù)庫(kù)一般都支持現(xiàn)代大型數(shù)據(jù)庫(kù)一般都支持多粒度封鎖多粒度封鎖,允許一個(gè)事務(wù),允許一個(gè)事務(wù)鎖定不同類(lèi)型的資源鎖定不同類(lèi)型的資源DataBaseDataBase魏英魏英 tutor_ 7952616 數(shù)據(jù)庫(kù)的恢復(fù)數(shù)據(jù)庫(kù)的恢復(fù)如果數(shù)據(jù)庫(kù)中只包含成功事務(wù)提交的結(jié)果,則
44、數(shù)據(jù)庫(kù)處如果數(shù)據(jù)庫(kù)中只包含成功事務(wù)提交的結(jié)果,則數(shù)據(jù)庫(kù)處于于一致?tīng)顟B(tài)一致?tīng)顟B(tài)(或正確狀態(tài),完整狀態(tài))(或正確狀態(tài),完整狀態(tài))如果數(shù)據(jù)庫(kù)在運(yùn)行中發(fā)生故障,使一些事務(wù)尚未完成就如果數(shù)據(jù)庫(kù)在運(yùn)行中發(fā)生故障,使一些事務(wù)尚未完成就被迫中斷,它們對(duì)數(shù)據(jù)庫(kù)的修改有一部分已寫(xiě)入物理數(shù)被迫中斷,它們對(duì)數(shù)據(jù)庫(kù)的修改有一部分已寫(xiě)入物理數(shù)據(jù)庫(kù),則稱(chēng)數(shù)據(jù)庫(kù)處于據(jù)庫(kù),則稱(chēng)數(shù)據(jù)庫(kù)處于不一致?tīng)顟B(tài)不一致?tīng)顟B(tài)將數(shù)據(jù)庫(kù)從某種故障狀態(tài)恢復(fù)到正確狀態(tài)的處理過(guò)程稱(chēng)將數(shù)據(jù)庫(kù)從某種故障狀態(tài)恢復(fù)到正確狀態(tài)的處理過(guò)程稱(chēng)為為數(shù)據(jù)庫(kù)恢復(fù)數(shù)據(jù)庫(kù)恢復(fù)數(shù)據(jù)庫(kù)故障分類(lèi)數(shù)據(jù)庫(kù)故障分類(lèi)事務(wù)故障事務(wù)故障系統(tǒng)故障系統(tǒng)故障介質(zhì)故障介質(zhì)故障計(jì)算機(jī)病毒計(jì)算機(jī)病毒數(shù)據(jù)庫(kù)本
45、身未被破壞數(shù)據(jù)庫(kù)本身未被破壞數(shù)據(jù)庫(kù)本身被破壞數(shù)據(jù)庫(kù)本身被破壞DataBaseDataBase魏英魏英 tutor_ 7952616 數(shù)據(jù)庫(kù)的恢復(fù)數(shù)據(jù)庫(kù)的恢復(fù)基本原理:基本原理:冗余冗余利用利用后備副本后備副本將數(shù)據(jù)庫(kù)恢復(fù)到轉(zhuǎn)儲(chǔ)時(shí)的一致?tīng)顟B(tài),利將數(shù)據(jù)庫(kù)恢復(fù)到轉(zhuǎn)儲(chǔ)時(shí)的一致?tīng)顟B(tài),利用運(yùn)行記錄(用運(yùn)行記錄(事務(wù)日志事務(wù)日志)將數(shù)據(jù)庫(kù)恢復(fù)到故障前事務(wù))將數(shù)據(jù)庫(kù)恢復(fù)到故障前事務(wù)成功提交時(shí)的一致?tīng)顟B(tài)成功提交時(shí)的一致?tīng)顟B(tài)恢復(fù)機(jī)制的兩個(gè)關(guān)鍵問(wèn)題恢復(fù)機(jī)制的兩個(gè)關(guān)鍵問(wèn)題如何建立冗余數(shù)據(jù)如何建立冗余數(shù)據(jù)如何利用冗余數(shù)據(jù)實(shí)施數(shù)據(jù)庫(kù)恢復(fù)如何利用冗余數(shù)據(jù)實(shí)施數(shù)據(jù)庫(kù)恢復(fù)DataBaseDataBase魏英魏英 tutor_
46、7952616 數(shù)據(jù)庫(kù)的恢復(fù)數(shù)據(jù)庫(kù)的恢復(fù)數(shù)據(jù)備份(轉(zhuǎn)儲(chǔ),數(shù)據(jù)備份(轉(zhuǎn)儲(chǔ),Backup)所謂所謂轉(zhuǎn)儲(chǔ)轉(zhuǎn)儲(chǔ)是指是指DBA定期定期將將整個(gè)整個(gè)數(shù)據(jù)庫(kù)復(fù)制到磁帶或另數(shù)據(jù)庫(kù)復(fù)制到磁帶或另一個(gè)磁盤(pán)上保存起來(lái)的過(guò)程一個(gè)磁盤(pán)上保存起來(lái)的過(guò)程這些備份的數(shù)據(jù)文件稱(chēng)為這些備份的數(shù)據(jù)文件稱(chēng)為后備副本后備副本或后援副本或后援副本轉(zhuǎn)儲(chǔ)方式轉(zhuǎn)儲(chǔ)方式按轉(zhuǎn)儲(chǔ)的數(shù)據(jù)量分為按轉(zhuǎn)儲(chǔ)的數(shù)據(jù)量分為海量轉(zhuǎn)儲(chǔ)海量轉(zhuǎn)儲(chǔ)和和增量轉(zhuǎn)儲(chǔ)增量轉(zhuǎn)儲(chǔ)按系統(tǒng)運(yùn)行狀態(tài)分為按系統(tǒng)運(yùn)行狀態(tài)分為靜態(tài)轉(zhuǎn)儲(chǔ)靜態(tài)轉(zhuǎn)儲(chǔ)和和動(dòng)態(tài)轉(zhuǎn)儲(chǔ)動(dòng)態(tài)轉(zhuǎn)儲(chǔ)轉(zhuǎn)儲(chǔ)狀態(tài)轉(zhuǎn)儲(chǔ)狀態(tài)動(dòng)態(tài)動(dòng)態(tài)靜態(tài)靜態(tài)轉(zhuǎn)儲(chǔ)轉(zhuǎn)儲(chǔ)方式方式海量海量動(dòng)態(tài)海量轉(zhuǎn)儲(chǔ)動(dòng)態(tài)海量轉(zhuǎn)儲(chǔ)靜態(tài)海量轉(zhuǎn)儲(chǔ)靜態(tài)海量轉(zhuǎn)儲(chǔ)增量增量動(dòng)態(tài)增量轉(zhuǎn)儲(chǔ)動(dòng)態(tài)增量轉(zhuǎn)儲(chǔ)
47、靜態(tài)增量轉(zhuǎn)儲(chǔ)靜態(tài)增量轉(zhuǎn)儲(chǔ)DataBaseDataBase魏英魏英 tutor_ 7952616 數(shù)據(jù)庫(kù)的恢復(fù)數(shù)據(jù)庫(kù)的恢復(fù)事務(wù)日志事務(wù)日志在事務(wù)運(yùn)行過(guò)程中,在事務(wù)運(yùn)行過(guò)程中,DBMS將事務(wù)的每一個(gè)將事務(wù)的每一個(gè)更新更新操作操作登記在登記在日志文件日志文件中中日志文件的內(nèi)容日志文件的內(nèi)容事務(wù)的開(kāi)始標(biāo)記事務(wù)的開(kāi)始標(biāo)記(BEGIN TRANSACTION)事務(wù)的結(jié)束狀態(tài)事務(wù)的結(jié)束狀態(tài)(COMMIT或或ROLLBACK)事務(wù)的更新操作事務(wù)的更新操作(更新的數(shù)據(jù)對(duì)象,更新的數(shù)據(jù)對(duì)象,前像前像,后像后像)登記日志文件的原則登記日志文件的原則登記的次序嚴(yán)格按并發(fā)事務(wù)執(zhí)行的登記的次序嚴(yán)格按并發(fā)事務(wù)執(zhí)行的時(shí)間次序
48、時(shí)間次序必須必須先寫(xiě)日志文件先寫(xiě)日志文件,后寫(xiě)數(shù)據(jù)庫(kù),后寫(xiě)數(shù)據(jù)庫(kù)DataBaseDataBase魏英魏英 tutor_ 7952616 數(shù)據(jù)庫(kù)的恢復(fù)數(shù)據(jù)庫(kù)的恢復(fù)例例:銀行轉(zhuǎn)賬事務(wù)的日志文件:銀行轉(zhuǎn)賬事務(wù)的日志文件P184BEGINTRANSACTIONUPDATE 賬戶(hù)賬戶(hù) SET 余額余額=余額余額-100 WHERE 賬號(hào)賬號(hào)=AUPDATE 賬戶(hù)賬戶(hù) SET 余額余額=余額余額+100 WHERE 賬號(hào)賬號(hào)=BCOMMIT步驟步驟操作操作1BEGIN TRANSACTION2READ(A,V)3V=V-1004WRITE(A,V)5READ(B,V)6V=V+1007WRITE(B,V)
49、8COMMIT日志記錄日志記錄DataBaseDataBase魏英魏英 tutor_ 7952616 數(shù)據(jù)庫(kù)的恢復(fù)數(shù)據(jù)庫(kù)的恢復(fù)日志文件的作用日志文件的作用事務(wù)故障和系統(tǒng)故障的恢復(fù)事務(wù)故障和系統(tǒng)故障的恢復(fù)必須必須使用日志文件使用日志文件在動(dòng)態(tài)轉(zhuǎn)儲(chǔ)方式中在動(dòng)態(tài)轉(zhuǎn)儲(chǔ)方式中必須必須建立日志文件,后備副本和日建立日志文件,后備副本和日志文件綜合起來(lái)才能有效地恢復(fù)數(shù)據(jù)庫(kù)志文件綜合起來(lái)才能有效地恢復(fù)數(shù)據(jù)庫(kù)在靜態(tài)轉(zhuǎn)儲(chǔ)方式中,在靜態(tài)轉(zhuǎn)儲(chǔ)方式中,也可以也可以建立日志文件,提高故障建立日志文件,提高故障恢復(fù)效率恢復(fù)效率事務(wù)日志一般不能和數(shù)據(jù)庫(kù)放在同一磁盤(pán)上,以事務(wù)日志一般不能和數(shù)據(jù)庫(kù)放在同一磁盤(pán)上,以免在磁盤(pán)損壞時(shí)
50、,兩者同時(shí)丟失。如果二者不得免在磁盤(pán)損壞時(shí),兩者同時(shí)丟失。如果二者不得不放在同一磁盤(pán)上,則應(yīng)經(jīng)常備份事務(wù)日志不放在同一磁盤(pán)上,則應(yīng)經(jīng)常備份事務(wù)日志DataBaseDataBase魏英魏英 tutor_ 7952616 數(shù)據(jù)庫(kù)的恢復(fù)數(shù)據(jù)庫(kù)的恢復(fù)事務(wù)故障的恢復(fù)事務(wù)故障的恢復(fù)故障原因:事務(wù)在運(yùn)行到正常終止點(diǎn)前被終止故障原因:事務(wù)在運(yùn)行到正常終止點(diǎn)前被終止恢復(fù)策略:利用恢復(fù)策略:利用日志文件日志文件撤銷(xiāo)此事務(wù)對(duì)數(shù)據(jù)庫(kù)進(jìn)行的撤銷(xiāo)此事務(wù)對(duì)數(shù)據(jù)庫(kù)進(jìn)行的修改修改恢復(fù)步驟恢復(fù)步驟反向反向掃描日志文件,查找該事務(wù)的更新操作掃描日志文件,查找該事務(wù)的更新操作對(duì)該事務(wù)的更新操作執(zhí)行逆操作對(duì)該事務(wù)的更新操作執(zhí)行逆操作繼
51、續(xù)反向掃描,查找該事務(wù)其它的更新操作,并做同樣處繼續(xù)反向掃描,查找該事務(wù)其它的更新操作,并做同樣處理,直到讀到該事務(wù)的開(kāi)始標(biāo)記,事務(wù)故障就恢復(fù)完成了理,直到讀到該事務(wù)的開(kāi)始標(biāo)記,事務(wù)故障就恢復(fù)完成了事務(wù)故障的恢復(fù)是由系統(tǒng)事務(wù)故障的恢復(fù)是由系統(tǒng)自動(dòng)完成自動(dòng)完成的,對(duì)用戶(hù)的,對(duì)用戶(hù)透明透明步驟步驟操作操作1BEGIN TRANSACTION2READ(A,V)3V=V-1004WRITE(A,V)5READ(B,V)6V=V+1007WRITE(B,V)8COMMIT日志記錄日志記錄DataBaseDataBase魏英魏英 tutor_ 7952616 數(shù)據(jù)庫(kù)的恢復(fù)數(shù)據(jù)庫(kù)的恢復(fù)系統(tǒng)故障的恢復(fù)系統(tǒng)故
52、障的恢復(fù)故障原因故障原因未完成事務(wù)未完成事務(wù)對(duì)數(shù)據(jù)庫(kù)的更新可能已寫(xiě)入數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)庫(kù)的更新可能已寫(xiě)入數(shù)據(jù)庫(kù)已提交事務(wù)已提交事務(wù)對(duì)數(shù)據(jù)庫(kù)的更新可能還留在緩沖區(qū)沒(méi)來(lái)得及寫(xiě)入數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)庫(kù)的更新可能還留在緩沖區(qū)沒(méi)來(lái)得及寫(xiě)入數(shù)據(jù)庫(kù)恢復(fù)策略:撤銷(xiāo)故障發(fā)生時(shí)未完成的事務(wù),重做已完成的事恢復(fù)策略:撤銷(xiāo)故障發(fā)生時(shí)未完成的事務(wù),重做已完成的事務(wù)務(wù)恢復(fù)步驟恢復(fù)步驟正向正向掃描日志文件,找出故障發(fā)生前已經(jīng)提交的事務(wù),將其事務(wù)標(biāo)識(shí)掃描日志文件,找出故障發(fā)生前已經(jīng)提交的事務(wù),將其事務(wù)標(biāo)識(shí)記入記入重做重做(REDO)隊(duì)列隊(duì)列,同時(shí)找出故障發(fā)生時(shí)尚未完成的事務(wù),將其事,同時(shí)找出故障發(fā)生時(shí)尚未完成的事務(wù),將其事務(wù)標(biāo)識(shí)記入務(wù)標(biāo)識(shí)
53、記入撤銷(xiāo)撤銷(xiāo)(UNDO)隊(duì)列隊(duì)列反向反向掃描日志文件,對(duì)撤銷(xiāo)隊(duì)列中的每個(gè)事務(wù)的更新操作執(zhí)行逆操作掃描日志文件,對(duì)撤銷(xiāo)隊(duì)列中的每個(gè)事務(wù)的更新操作執(zhí)行逆操作正向正向掃描日志文件,對(duì)重做隊(duì)列中的每個(gè)事務(wù)重新執(zhí)行日志文件登記掃描日志文件,對(duì)重做隊(duì)列中的每個(gè)事務(wù)重新執(zhí)行日志文件登記的操作的操作系統(tǒng)故障的恢復(fù)是由系統(tǒng)在重新啟動(dòng)時(shí)系統(tǒng)故障的恢復(fù)是由系統(tǒng)在重新啟動(dòng)時(shí)自動(dòng)完成自動(dòng)完成的,不需要的,不需要用戶(hù)干預(yù)用戶(hù)干預(yù)步驟步驟操作操作1BEGIN TRANSACTION2READ(A,V)3V=V-1004WRITE(A,V)5READ(B,V)6V=V+1007WRITE(B,V)8COMMIT日志記錄日志記
54、錄DataBaseDataBase魏英魏英 tutor_ 7952616 數(shù)據(jù)庫(kù)的恢復(fù)數(shù)據(jù)庫(kù)的恢復(fù)介質(zhì)故障的恢復(fù)介質(zhì)故障的恢復(fù)故障原因:磁盤(pán)上的物理數(shù)據(jù)庫(kù)和日志文件被破壞故障原因:磁盤(pán)上的物理數(shù)據(jù)庫(kù)和日志文件被破壞恢復(fù)策略:重裝數(shù)據(jù)庫(kù),然后重做已完成的事務(wù)恢復(fù)策略:重裝數(shù)據(jù)庫(kù),然后重做已完成的事務(wù)恢復(fù)步驟恢復(fù)步驟裝入最新的數(shù)據(jù)庫(kù)后備副本裝入最新的數(shù)據(jù)庫(kù)后備副本對(duì)于動(dòng)態(tài)轉(zhuǎn)儲(chǔ)的數(shù)據(jù)庫(kù)副本,還需裝入轉(zhuǎn)儲(chǔ)開(kāi)始時(shí)刻的日對(duì)于動(dòng)態(tài)轉(zhuǎn)儲(chǔ)的數(shù)據(jù)庫(kù)副本,還需裝入轉(zhuǎn)儲(chǔ)開(kāi)始時(shí)刻的日志文件副本,利用恢復(fù)系統(tǒng)故障的方法,將數(shù)據(jù)庫(kù)恢復(fù)到志文件副本,利用恢復(fù)系統(tǒng)故障的方法,將數(shù)據(jù)庫(kù)恢復(fù)到一致性狀態(tài)一致性狀態(tài)裝入轉(zhuǎn)儲(chǔ)結(jié)束時(shí)刻的
55、日志文件副本,重做已完成的事務(wù)裝入轉(zhuǎn)儲(chǔ)結(jié)束時(shí)刻的日志文件副本,重做已完成的事務(wù)介質(zhì)故障的恢復(fù)需要介質(zhì)故障的恢復(fù)需要DBA介入介入DataBaseDataBase魏英魏英 tutor_ 7952616 數(shù)據(jù)庫(kù)的恢復(fù)數(shù)據(jù)庫(kù)的恢復(fù)正常運(yùn)行正常運(yùn)行TaTb靜態(tài)轉(zhuǎn)儲(chǔ)靜態(tài)轉(zhuǎn)儲(chǔ)運(yùn)行事務(wù)運(yùn)行事務(wù)Tf故障發(fā)生點(diǎn)故障發(fā)生點(diǎn)登記日志文件登記日志文件介質(zhì)故障恢復(fù)介質(zhì)故障恢復(fù)重裝后備副本重裝后備副本 利用日志文件恢復(fù)事務(wù)利用日志文件恢復(fù)事務(wù) 繼續(xù)運(yùn)行繼續(xù)運(yùn)行登記日志文件登記日志文件DataBaseDataBase魏英魏英 tutor_ 7952616 數(shù)據(jù)庫(kù)的恢復(fù)數(shù)據(jù)庫(kù)的恢復(fù)檢查點(diǎn)檢查點(diǎn)(Checkpoint,CP)利
56、用日志技術(shù)進(jìn)行恢復(fù)時(shí),必須要搜索日志文件以確利用日志技術(shù)進(jìn)行恢復(fù)時(shí),必須要搜索日志文件以確定定REDO事務(wù)和事務(wù)和UNDO事務(wù),但搜索整個(gè)日志文件比較事務(wù),但搜索整個(gè)日志文件比較費(fèi)時(shí),且許多費(fèi)時(shí),且許多REDO事務(wù)已將結(jié)果寫(xiě)入數(shù)據(jù)庫(kù),再重事務(wù)已將結(jié)果寫(xiě)入數(shù)據(jù)庫(kù),再重做較費(fèi)時(shí)做較費(fèi)時(shí)為減少為減少REDO工作量,在事務(wù)運(yùn)行過(guò)程中,工作量,在事務(wù)運(yùn)行過(guò)程中,DBMS周期周期性性在事務(wù)日志中設(shè)置檢查點(diǎn)在事務(wù)日志中設(shè)置檢查點(diǎn)恢復(fù)策略恢復(fù)策略時(shí)間時(shí)間T1T2T3T4T5檢查點(diǎn)檢查點(diǎn)系統(tǒng)崩潰系統(tǒng)崩潰DataBaseDataBase魏英魏英 tutor_ 7952616 完整性約束完整性約束數(shù)據(jù)庫(kù)的完整性數(shù)據(jù)
57、庫(kù)的完整性正確性正確性有效性有效性相容性相容性關(guān)系數(shù)據(jù)模型的完整性約束規(guī)則關(guān)系數(shù)據(jù)模型的完整性約束規(guī)則域完整性約束域完整性約束:對(duì)屬性值有效性的約束,可在:對(duì)屬性值有效性的約束,可在CREATE TABLE語(yǔ)句通過(guò)語(yǔ)句通過(guò)NOT NULL,DEFAULT,UNIQUE和和CHECK子句實(shí)現(xiàn)子句實(shí)現(xiàn)實(shí)體完整性約束實(shí)體完整性約束:主碼非空,可在:主碼非空,可在CREATE TABLE語(yǔ)句通過(guò)語(yǔ)句通過(guò)PRIMARY KEY子句實(shí)現(xiàn)子句實(shí)現(xiàn)參照完整性約束參照完整性約束:外碼為另一個(gè)關(guān)系中主碼的有效值或空值,:外碼為另一個(gè)關(guān)系中主碼的有效值或空值,可在可在CREATE TABLE語(yǔ)句通過(guò)語(yǔ)句通過(guò)FORE
58、IGN KEY子句實(shí)現(xiàn)子句實(shí)現(xiàn)用戶(hù)自定義完整性用戶(hù)自定義完整性,可在,可在CREATE TABLE語(yǔ)句通過(guò)語(yǔ)句通過(guò)CHECK子子句實(shí)現(xiàn),或者通過(guò)存儲(chǔ)過(guò)程、觸發(fā)器、句實(shí)現(xiàn),或者通過(guò)存儲(chǔ)過(guò)程、觸發(fā)器、斷言斷言實(shí)現(xiàn)實(shí)現(xiàn)DataBaseDataBase魏英魏英 tutor_ 7952616 完整性約束完整性約束刪除和更新規(guī)則刪除和更新規(guī)則刪除父表元組的約束刪除父表元組的約束刪除約束、級(jí)聯(lián)約束、刪除置空、刪除置缺省值刪除約束、級(jí)聯(lián)約束、刪除置空、刪除置缺省值更新父表主碼的約束更新父表主碼的約束更新約束、更新約束、更新置空、更新置缺省值更新約束、更新約束、更新置空、更新置缺省值子表操作約束子表操作約束插入
59、或更新的外碼值必須是父表的有效值或空值插入或更新的外碼值必須是父表的有效值或空值(允許為允許為空時(shí)空時(shí))在子表中刪除元組不受限制在子表中刪除元組不受限制DataBaseDataBase魏英魏英 tutor_ 7952616 數(shù)據(jù)庫(kù)的安全性數(shù)據(jù)庫(kù)的安全性數(shù)據(jù)庫(kù)安全性數(shù)據(jù)庫(kù)安全性主要指保護(hù)數(shù)據(jù)庫(kù),防止不僉的使主要指保護(hù)數(shù)據(jù)庫(kù),防止不僉的使用,以免數(shù)據(jù)泄漏、非法更改和破壞用,以免數(shù)據(jù)泄漏、非法更改和破壞安全性控制的一般級(jí)別安全性控制的一般級(jí)別訪問(wèn)控制訪問(wèn)控制是對(duì)用戶(hù)訪問(wèn)數(shù)據(jù)庫(kù)各種是對(duì)用戶(hù)訪問(wèn)數(shù)據(jù)庫(kù)各種資源資源的的權(quán)限權(quán)限的控制的控制用戶(hù)必須獲得對(duì)數(shù)據(jù)庫(kù)對(duì)象的操作權(quán)限,才能在規(guī)定用戶(hù)必須獲得對(duì)數(shù)據(jù)庫(kù)對(duì)
60、象的操作權(quán)限,才能在規(guī)定權(quán)限之內(nèi)操作數(shù)據(jù)庫(kù)權(quán)限之內(nèi)操作數(shù)據(jù)庫(kù)用戶(hù)分類(lèi)用戶(hù)分類(lèi)具有具有DBA特權(quán)的數(shù)據(jù)庫(kù)用戶(hù)特權(quán)的數(shù)據(jù)庫(kù)用戶(hù)具有支配部分?jǐn)?shù)據(jù)庫(kù)資源特權(quán)的數(shù)據(jù)庫(kù)用戶(hù)具有支配部分?jǐn)?shù)據(jù)庫(kù)資源特權(quán)的數(shù)據(jù)庫(kù)用戶(hù)一般數(shù)據(jù)庫(kù)用戶(hù)一般數(shù)據(jù)庫(kù)用戶(hù)DataBaseDataBase魏英魏英 tutor_ 7952616 數(shù)據(jù)庫(kù)的安全性數(shù)據(jù)庫(kù)的安全性數(shù)據(jù)庫(kù)安全性控制數(shù)據(jù)庫(kù)安全性控制用戶(hù)登錄數(shù)據(jù)庫(kù)的控制用戶(hù)登錄數(shù)據(jù)庫(kù)的控制用戶(hù)訪問(wèn)各種數(shù)據(jù)庫(kù)資源的權(quán)限控制用戶(hù)訪問(wèn)各種數(shù)據(jù)庫(kù)資源的權(quán)限控制用戶(hù)用戶(hù)注冊(cè)登錄注冊(cè)登錄賬戶(hù)賬戶(hù)創(chuàng)建數(shù)據(jù)創(chuàng)建數(shù)據(jù)庫(kù)賬戶(hù)庫(kù)賬戶(hù)DBA授予操作授予操作權(quán)限權(quán)限數(shù)據(jù)庫(kù)數(shù)據(jù)庫(kù)DataBaseDataBase魏英
61、魏英 tutor_ 7952616 數(shù)據(jù)庫(kù)的安全性數(shù)據(jù)庫(kù)的安全性用戶(hù)或應(yīng)用程序使用數(shù)據(jù)庫(kù)的方式稱(chēng)為用戶(hù)或應(yīng)用程序使用數(shù)據(jù)庫(kù)的方式稱(chēng)為權(quán)限權(quán)限權(quán)限的種類(lèi)權(quán)限的種類(lèi)訪問(wèn)數(shù)據(jù)庫(kù)的權(quán)限:讀、插入、修改、刪除訪問(wèn)數(shù)據(jù)庫(kù)的權(quán)限:讀、插入、修改、刪除修改數(shù)據(jù)庫(kù)模式方面的權(quán)限:索引、資源、修改、撤修改數(shù)據(jù)庫(kù)模式方面的權(quán)限:索引、資源、修改、撤銷(xiāo)銷(xiāo)SQL中用戶(hù)的權(quán)限類(lèi)型:中用戶(hù)的權(quán)限類(lèi)型:SELECT、INSERT、DELETE、UPDATE、REFERENCES、USAGEDataBaseDataBase魏英魏英 tutor_ 7952616 數(shù)據(jù)庫(kù)的安全性數(shù)據(jù)庫(kù)的安全性角色角色可避免為多個(gè)可避免為多個(gè)具有相
62、同權(quán)限具有相同權(quán)限的用戶(hù)進(jìn)行繁瑣的授權(quán)和的用戶(hù)進(jìn)行繁瑣的授權(quán)和回收權(quán)限操作回收權(quán)限操作固定服務(wù)器角色:固定服務(wù)器角色:sysadmin,dbcreator,diskadmin固定數(shù)據(jù)庫(kù)角色:固定數(shù)據(jù)庫(kù)角色:db_owner,db_accessadmin,db_datareader,db_datawriter,db_securityadmin,db_backupoperator用戶(hù)自定義角色用戶(hù)自定義角色在角色中添加成員在角色中添加成員DataBaseDataBase魏英魏英 tutor_ 7952616 數(shù)據(jù)庫(kù)的安全性數(shù)據(jù)庫(kù)的安全性授權(quán)與回收權(quán)限授權(quán)與回收權(quán)限授權(quán)與被授權(quán)的層次授權(quán)與被授權(quán)的層
63、次DBA用戶(hù)用戶(hù)DB一一般用戶(hù)般用戶(hù)DB特特權(quán)用戶(hù)權(quán)用戶(hù)授權(quán)授權(quán)授權(quán)授權(quán)授權(quán)授權(quán)轉(zhuǎn)授轉(zhuǎn)授轉(zhuǎn)授轉(zhuǎn)授轉(zhuǎn)授轉(zhuǎn)授DataBaseDataBase魏英魏英 tutor_ 7952616 數(shù)據(jù)庫(kù)的安全性數(shù)據(jù)庫(kù)的安全性SQL的授權(quán)語(yǔ)句的授權(quán)語(yǔ)句DBA授予某一類(lèi)數(shù)據(jù)庫(kù)用戶(hù)的特權(quán)授予某一類(lèi)數(shù)據(jù)庫(kù)用戶(hù)的特權(quán)GRANTALL語(yǔ)句列表語(yǔ)句列表TO登錄賬戶(hù)登錄賬戶(hù)DBA或數(shù)據(jù)庫(kù)特權(quán)用戶(hù)授予某個(gè)用戶(hù)對(duì)某些數(shù)據(jù)對(duì)象進(jìn)行某種或數(shù)據(jù)庫(kù)特權(quán)用戶(hù)授予某個(gè)用戶(hù)對(duì)某些數(shù)據(jù)對(duì)象進(jìn)行某種操作的權(quán)限操作的權(quán)限GRANT權(quán)限權(quán)限ON數(shù)據(jù)庫(kù)對(duì)象數(shù)據(jù)庫(kù)對(duì)象TO用戶(hù)或角色用戶(hù)或角色WITHGRANTOPTION回收權(quán)限回收權(quán)限D(zhuǎn)BA撤銷(xiāo)授予某個(gè)數(shù)據(jù)庫(kù)特權(quán)用戶(hù)的特權(quán)撤銷(xiāo)授予某個(gè)數(shù)據(jù)庫(kù)特權(quán)用戶(hù)的特權(quán)REVOKE ALL語(yǔ)句列表語(yǔ)句列表FROM登錄賬戶(hù)登錄賬戶(hù)DBA或數(shù)據(jù)庫(kù)特權(quán)用戶(hù)撤銷(xiāo)授予某個(gè)用戶(hù)對(duì)某些數(shù)據(jù)對(duì)象進(jìn)行或數(shù)據(jù)庫(kù)特權(quán)用戶(hù)撤銷(xiāo)授予某個(gè)用戶(hù)對(duì)某些數(shù)據(jù)對(duì)象進(jìn)行某種操作的權(quán)限某種操作的權(quán)限REVOKE權(quán)限權(quán)限ON數(shù)據(jù)庫(kù)對(duì)象數(shù)據(jù)庫(kù)對(duì)象FROM用戶(hù)表用戶(hù)表RESTRICTCASCADE
- 溫馨提示:
1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識(shí)競(jìng)賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫(kù)試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫(kù)試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫(kù)試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識(shí)測(cè)試題庫(kù)及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測(cè)工種技術(shù)比武題庫(kù)含解析
- 1 礦山應(yīng)急救援安全知識(shí)競(jìng)賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案