buffer。某次操作,我們取了資料庫某**中的資料,這個資料會在記憶體中快取一些時間。對這個資料的修改在開始時候也只是修改在記憶體中的內容。當db
buffer已滿或者遇到其他的情況,這些資料會寫入data file。
undo,redo
x, 5>,redo日誌為。
x, 5, 15>。
file對應的資料不同,我們認為記憶體中的資料是髒資料),db buffer再選擇合適的時機將資料持久化到data
file中。這種順序可以保證在需要故障恢復時恢復最後的修改操作。先持久化日誌的策略叫做write
ahead log,即預寫日誌。
t」)。在系統恢復時,如果在log file中某個事務沒有事務結束標記,那麼需要對這個事務進行undo操作,如果有事務結束標記,則redo。
file?如果儲存的事務數量都是1個,也就意味著是將日誌立即刷入磁碟,那麼資料的一致性很好保證。在執行事t時,突然斷電,如果未對磁碟上的redo
log file發生追加操作,可以把這個事務t看做未成功。如果redo log file被修改,則認為事務是成功了,重啟資料庫使用redo
log恢復資料到db buffer和 data file即可。
file。這種方式可以減少磁碟io,增加吞吐量。不過,這種方式適用於一致性要求不高的場合。因為如果出現斷電等系統故障,log buffer、db
buffer中的完成的事務會丟失。以轉賬為例,如果使用者的轉賬事務在這種情況下丟失了,這意味著在系統恢復後使用者需要重新轉賬。
檢查點checkpoint
buffer中的內容/部分內容(特別是髒資料)轉儲到data
file中。在轉儲時,會記錄checkpoint發生的」時刻「。在故障回覆時候,只需要redo/undo最近的一次checkpoint之後的操作。
冪等性問題
= 5*1*1*1,所以對5的乘1操作具有冪等性。日誌檔案在故障恢復中,可能會回放多次(比如第一次回放到一半時系統斷電了,不得不再重新回放),如果操作記錄不滿足冪等性,會造成資料錯誤。
理解資料庫中的事務
什麼是事務?我們知道,資料庫是乙個面向多使用者的共享機制,因此資料庫管理系統應當具備併發控制和封鎖機制,保證資料庫系統的正常執行。但是當多個使用者訪問資料庫的時候,如果每乙個使用者程式乙個乙個的序列執行,則每一時刻只有乙個使用者執行對資料庫的操作,其他使用者必須等待,這樣的話會嚴重影響資料庫資源的使...
理解「資料庫」中的各個元件
任何資料庫都是依賴於許多層次的,而且每個層次都與其他層次同樣重要,如圖 1 3所示。這些層次之間可能是相互交迭的,而且對於 d b a是透明的。但無論如何,這些層次可以概括 為 硬體層 作業系統層 網路層 dbms 資料庫管理系統,在這裡就是o r a c l e 層 使用d b m s的應用程式層...
徹底理解資料庫事務
事務 transaction 一般是指要做的或所做的事情。在計算機術語中是指訪問並可能更新資料庫中各種資料項的乙個程式執行單元 unit 在計算機術語中,事務通常就是指資料庫事務。乙個資料庫事務通常包含對資料庫進行讀或寫的乙個操作序列。它的存在包含有以下兩個目的 1 為資料庫操作提供了乙個從失敗中恢...