11.5 登記日志文件
11.5.1 日志文件的格式和內(nèi)容
日志文件是記錄每個(gè)事務(wù)對(duì)數(shù)據(jù)庫(kù)更新操作的文件,數(shù)據(jù)庫(kù)系統(tǒng)在運(yùn)行過程中,DBMS負(fù)責(zé)將所有事務(wù)的更新操作登記到日志文件中,也就是說日志文件是系統(tǒng)自動(dòng)維護(hù)的。
1、以記錄為單位的日志文件:其內(nèi)容包括每個(gè)事務(wù)的開始標(biāo)記、結(jié)束標(biāo)記和所有更新操作;每個(gè)日志記錄的內(nèi)容包括:事務(wù)標(biāo)識(shí)、操作類型、操作對(duì)象、更新前數(shù)據(jù)的舊值,和更新后數(shù)據(jù)的新值;
2、數(shù)據(jù)塊為單位的日志文件:將更新前的整個(gè)數(shù)據(jù)塊和更新后的整個(gè)數(shù)據(jù)塊全部放在了日志文件中;
11.5.2 日志文件的作用
1、事務(wù)故障恢復(fù)和系統(tǒng)故障恢復(fù)必須使用日志文件
(1)故障恢復(fù)的兩個(gè)基本操作:UNDO和REDO
(A) UNDO的作用是撤銷事務(wù),具體步驟:
(a) 反向掃描日志文件,找到需要撤銷的事務(wù)的更新操作;
(b) 對(duì)事務(wù)的更新操作執(zhí)行逆操作;
(c) 繼續(xù)反向查找該事務(wù)的其他更新操作,并執(zhí)行相應(yīng)的逆操作;
(d) 重復(fù)執(zhí)行步驟(C),直至遇到該事務(wù)開始記錄。
(B) REDO的作用是重做事務(wù),具體步驟:
(a) 正向掃描日志文件,找到需要重做的事務(wù)的更新操作;
(b) 對(duì)事務(wù)重新執(zhí)行日志文件登記的操作,即將日志文件中“更新后的值”寫入數(shù)據(jù)庫(kù);
(c) 繼續(xù)正向查找該事務(wù)的其他更新操作,并重新執(zhí)行,將日志文件中“更新后的值”寫入數(shù)據(jù)庫(kù);
(d) 重復(fù)執(zhí)行步驟(C),直至遇到該事務(wù)的提交記錄。
(1) 事務(wù)故障恢復(fù):只需把相應(yīng)的事務(wù)作撤銷UNDO即可;
(2) 系統(tǒng)故障恢復(fù):
(A) 正向掃描日志文件,找到系統(tǒng)故障前發(fā)生的所有事務(wù),如果該事務(wù)沒有完成,將其事務(wù)標(biāo)記加入撤銷隊(duì)列,如果該事務(wù)已經(jīng)完成,則將其事務(wù)標(biāo)記加入重做隊(duì)列;
(B) 對(duì)撤銷隊(duì)列中的所有事務(wù)作撤銷操作UNDO;
(C) 對(duì)重做隊(duì)列中的所有事務(wù)作重做操作REDO。
2、在動(dòng)態(tài)轉(zhuǎn)儲(chǔ)方式中必須建立日志文件
1、 在靜態(tài)轉(zhuǎn)儲(chǔ)方式中,也可以建立日志文件
11.5.3 登記日志文件的原則
1、 登記的次序嚴(yán)格按并行事務(wù)執(zhí)行的時(shí)間次序;
2、 必須先寫日志文件,后寫數(shù)據(jù)庫(kù)
11.6 具有檢查點(diǎn)的恢復(fù)技術(shù)
11.6.1 檢查點(diǎn)的作用
檢查點(diǎn)最大限度地減少數(shù)據(jù)庫(kù)完全恢復(fù)時(shí)所必須執(zhí)行的日志部分;
11.6.2 檢查點(diǎn)的引入
1、在日志文件中增加一類新的記錄—檢查點(diǎn)記錄,增加一個(gè)“重新開始文件”,并讓恢復(fù)子系統(tǒng)在登錄日志文件期間動(dòng)態(tài)地維護(hù)日志
2、檢查點(diǎn)記錄的內(nèi)容:
(1) 建立檢查點(diǎn)時(shí)刻所有正在執(zhí)行的事務(wù)清單;
(2) 這些事務(wù)最近一個(gè)日志記錄的地址。
3、“重新開始文件”用來記錄各個(gè)檢查點(diǎn)在日志文件中的地址;
2、 動(dòng)態(tài)維護(hù)日志文件的方法是周期性地執(zhí)行如下操作:建立檢查點(diǎn)、保存數(shù)據(jù)庫(kù)狀態(tài),具體步驟:
(1) 將當(dāng)前日志緩沖中的所有日志記錄寫入磁盤的日志文件上;
(2) 在日志文件中寫入一個(gè)檢查點(diǎn)記錄;
(3) 將當(dāng)前數(shù)據(jù)緩沖的所有數(shù)據(jù)記錄寫入磁盤的數(shù)據(jù)庫(kù)中;
(4) 把檢查點(diǎn)記錄在日志文件中的地址寫入一個(gè)“重新開始文件”;
3、 恢復(fù)子系統(tǒng)可以定期或不定期地建立檢查點(diǎn)來保存數(shù)據(jù)庫(kù)狀態(tài);
4、 使用檢查點(diǎn)方法可以改善恢復(fù)效率,事務(wù)在檢查點(diǎn)前已經(jīng)提交,則不必執(zhí)行REDO操作。
相關(guān)推薦:2010年9月計(jì)算機(jī)等級(jí)考試試題及答案解析專題預(yù)告:名師解析2010年9月計(jì)算機(jī)等級(jí)考試試題答案
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |