資料備份的原理(底層)

2021-09-19 07:32:50 字數 643 閱讀 5225

每行資料都儲存在資料頁上,當資料頁上的每個資料改變的時候,該頁上的timestamp(時間戳)就會被更新。在老版本的資料庫中乙個page上在頁頭和頁尾有兩個timestamp。我印象中較新版本的資料庫中只有乙個timestamp了。

當你開始進行資料庫備份的時候(0|1|2**都包含),第一件事情就是生成乙個檢查點。檢查點把資料庫buffer中所有的髒資料庫都重新整理到磁碟上。如果是緩衝日誌模式的話,它還要使磁碟映像和那些在邏輯日誌緩衝區映像同步。

ids在檢查點完成的時刻,建立了乙個備份時間戳,並且能夠為所有頁時間戳被評估的標準之一,以決定是否將其備份。

備份的順序:

在rootdbs,邏輯日誌資訊,以及blobspaces被備份後,其他的dbspaces就以chunk建立時的順序被備份出去。

在備份處理的過程中,檢查每乙個chunk中每乙個被使用過的頁,這個頁上的時間戳就被檢測以確定它是否滿足備份標準。

一旦物理日誌中所有的也都被讀過,並且合適的頁都 被備份的磁帶上後,檢查點會被允許繼續執行。並且ontape將會恢復在檢查點之前停下來的工作。作為檢查點處理過程中的一部分,被這一檢查點影響的所有頁的時間戳都會被更新。當ontape備份處理過程到達哪些已經被作為檢查點過程一部分備份的某一頁時,這一頁的時間戳將會比archive timestamp大,會使得他變得不適合備份。

資料庫 索引的底層原理

索引的底層原理 mysql支援兩種索引,b 樹索引,雜湊表索引 儲存引擎為myisam和innodb的索引結構 myisam儲存引擎 主鍵索引 非聚集索引 myisam引擎使用b 樹作為索引結構 葉節點的data域存放的是資料記錄位址 myisam中,主索引和輔助索引在結構上沒有任何區別,只是主索引...

Voliate的底層原理

jvm 底層是通過乙個叫做 記憶體屏障 的東西來完成。記憶體屏障,也叫做記憶體柵欄,是一組處理器指令,用於實現對記憶體操作的順序限制。所以能禁止指令重排序,即volatile能在一定程度上保證有序性。一定程度理解如下 語句1和語句2的順序不保證 語句4和語句5的順序不保證 但是無論怎麼重排,語句3前...

HashMap的底層原理

簡單來說,hashmap的實現是 陣列 鍊錶 陣列是hashmap的主體,鍊錶則是主要為了解決雜湊衝突而設立的。對於查詢來說,陣列更加的方便 對於刪除,修改,鍊錶更加的方便。hash表的本質就是乙個陣列,陣列中的每乙個元素被稱為乙個箱子 bin 箱子中存放的是鍵值對。儲存過程如下 根據k值計算他的雜...