日誌順序號(lsn)
支援物理邏輯redo。它是物理的,但在頁內它可能是邏輯的。
使用髒頁表來最大限度地減少恢復時不必要的重做。
使用模糊檢查點機制,只記錄髒頁資訊和相關的資訊,甚至不要求將髒頁寫到磁碟。不在檢查點時將髒頁寫入磁碟,而是連續地在後台重新整理髒頁面。
每個日誌記錄都有乙個唯一標識該記錄的日誌順序號(lsn)。
lsn:由乙個檔案號以及在該檔案中的偏移量組成。
每一頁也維護乙個叫頁日誌順序號(pagelsn)的標識。每當乙個更新操作發生在某頁上時,該操作將其日誌記錄的lsn儲存在該頁的pagelsn域中。在恢復的撤銷階段,lsn值小於或等於pagelsn值的日誌記錄將不在該頁上執行,因為它的動作已經在該頁上了。
每個日誌記錄包含同一事務的前一日誌記錄的lsn,放在prevlsn中,使得乙個事務可以由後向前提取,而不必讀整個日誌。事務回滾中會產生一些特殊的redo-only的日誌,稱為補償日誌記錄(compensation log record, clr)。clr中還有額外的稱為undonextlsn的字段,記錄下乙個需要undo的日誌的lsn。
包含乙個在資料庫緩衝區中已經更新的頁的列表,為每一頁儲存其pagelsn和乙個稱為reclsn的字段。reclsn用於標識已經實施於該頁的磁碟上的版本的日誌記錄。當某頁首次被放入髒頁表中,它的reclsn值被設定為日誌的當前末尾。
包含髒頁表和活動事務的列表。
恢復的過程包含三個階段:
找到最後的完整檢查日誌記錄,將該記錄讀入髒頁表。將redolsn設為髒頁表中頁的reclsn的最小值。
將undo-list初始設定為檢查點日誌記錄中的事務列表,從檢查點正向掃瞄,發現新的begin,就加入;發現end,就刪去。也記錄undo-list每乙個事務的最後乙個記錄,在undo階段使用。
一旦有更新頁的記錄,不在髒頁表,也加入髒頁表。
找到乙個更新日誌記錄:
如果該頁不在髒頁表中,或者該更新日誌記錄的lsn小於髒頁表中該頁的reclsn,跳過
否則從磁碟中調出該頁,如果其pagelsn小於該日誌記錄的lsn,就重做。
對日誌進行一遍反向掃瞄,對undo-list中的所有事務進行撤銷。
用分析階段所記錄的每乙個事務的最後乙個lsn來快速定位。
每找到乙個更新日誌記錄,就用它來執行乙個undo。
產生乙個包含undo的clr,並將該clr的undonextlsn設定為該更新日誌記錄的prevlsn。
如果遇到乙個clr,它的undonextlsn已經指明需要undo的lsn,且應該已經回滾。
OSGI企業應用與Aries開源專案 1
j2ee的企業應用十分地廣泛和成熟,但在模組化方面還缺乏合適的解決方案,osgi則正好可以彌補這方面的缺憾。但osgi又偏偏是個底層的元素,如果要使j2ee和osgi結合起來,就需要將j2ee應用從底層開始改造,就如你想將舊樓改造成更高的樓,需要重新將地基弄堅實點一樣。為了能讓osgi適應企業應用開...
RSA演算法簡介
rsa演算法簡介 1 簡介 當前最著名 應用最廣泛的公鑰系統rsa是在1978年,由美國麻省理工學院 mit 的rivest shamir和adleman在題為 獲得數字簽名和公開鑰密碼系統的方法 的 中提出的。它是乙個基於數論的非對稱 公開鑰 密碼體制,是一種分組密碼體制。其名稱來自於三個發明者的...
演算法分析(簡介)
演算法分析即指對乙個演算法所需要的資源進行 記憶體,通訊頻寬或計算機硬體等資源偶爾是我們主要關心的,乙個演算法所需要的資源越多,該演算法的複雜性越高,反之,所需要的資源越少,該演算法的複雜性越低,在計算機的資源中,最重要的是時間和空間 即儲存器 資源,因此演算法複雜性有時間複雜性和空間複雜性之分,不...