回覆列表
  • 1 # 使用者6004447615568

    事務處理過程

    update 或Insert操作:

    1.計算更新後tuple到原tuple的delta資訊,把這個delta複製到回滾段,作為undo;

    2.寫redo日誌,記錄對回滾段的更改,回滾段也是由緩衝區管理機構管理,也是相當於對頁面(page)的更改;

    3.把緩衝區中的對應tuple更新成新值,把新值的rollback pointer寫入undo(更改回滾段);

    4.寫redo日誌,記入對頁(回滾段)的更改;

    5.將被更改的頁面的狀態改成dirty,表示要被刷盤

    事務提交操作:

    日誌刷盤,當前事務的對應的最後的LSN(Log Sequence Number)之前的redo日誌都被寫入持久化儲存。

    崩潰恢復過程

    1.啟動開始時,檢測是資料庫在上次退出時是否發生崩潰;

    2.定位到最近的一個檢查點(checkpoint);

    3.定位在這個檢查點時刷磁碟的資料頁,檢查校驗checksum。如果不正確,說明這個頁在上次寫入是不完整的,從雙寫緩衝(doublewrite buffer)裡把正確的頁讀出來,更新到記憶體緩衝區中的頁;

    4.順序地(從上個檢查點開始到最後一個LSN)分析redo日誌,標識出未提交事務;

    5.順序執行redo,這些redo日誌不僅包含對資料段的更改(寫tuple), 也包括對回滾段的更改(寫undo log);

    6.回滾所有未提交的事務。

  • 中秋節和大豐收的關聯?
  • 在人行道左側行走對嗎?