有關日志的幾個概念
1. checkpoint
2. minlsn
3. redo、undo
checkpoint:當數據庫緩存中的髒頁達到一定程度或距離上一次checkpoint時間接近recovery interval時,先將緩存日志寫入日志文件,再將緩存中的髒頁寫入數據庫文件(注意寫入的順序),最後將checkpoint記錄寫出到日志中。
Checkpoint記錄包括這麼幾部分
a.記錄最老的活動事務
b.記錄最老的還沒有完成復制的復制事務
c.所有活動事務的清單
d.有關回滾該數據庫所需的最少工作的信息。
Minlsn(最小恢復日志序列號)當前最接近日志末端的活動日志
從minlsn到日志末端被稱為活動日志,活動日志不能被截斷的,所有的日志記錄都必須從 MinLSN 之前的日志部分截斷,minlsn也稱為截斷點
LSN 148 是事務日志中的最後一條記錄。在處理 LSN 147 處記錄的檢查點時,Tran 1 已經提交,而 Tran 2 是唯一的活動事務。這就使 Tran 2 的第一條日志記錄成為執行最後一個檢查點時處於活動狀態的事務的最舊日志記錄。這使 LSN 142(Tran 2 的開始事務記錄)成為 MinLSN。
Redo與undo
Redo通常使用在當圓滿事務日志(有commit標志)已寫入硬盤,但髒頁卻尚未寫入到數據庫中,此時需要將已完成的事務重新演練一番,讓數據庫中的值與日志保持一致
Undo撤銷已寫入到日志與數據庫中的夭折事務日志(沒有commit標志)的事務,將其改為舊記錄值
Checkpoint可提高系統的恢復過程的效率,主要是指redo的過程。
當事務的commit標志在checkpoint前出現,則該事務不再執行redo過程。由於undo針對的是uncommit事務,因此與checkpoint沒有關系。