InnoDB文檔筆記(三)—— Undo Log

接上篇,官網地址html

1、簡介

Undo Log是一組因讀寫事務產生的Undo log records 的集合,是數據的修改記錄,是邏輯日誌。mysql

Undo Logs由undo log segments組成,包含rollback segments。InnoDB最大支持128個rollback segment,其中32分配給臨時表空間,96個分配給常規表的事務數據修改,innodb_undo_logs控制rollback segment的數量。undo segment位於共享表空間內。sql

Undo Log用於事務的rollback,以及支持MVCC線程

2、Undo Slot

rollback segment所支持的事務數取決於undo slot的數量以及每一個事務所需的undo logs數量。3d

number of undo slots in a rollback segment = innodb page size / 16日誌

3、Undo Log 存儲

基於段 rollback segment存儲,每一個rollback segment記錄1024個undo log segment。基於這樣,支持在線事務限制爲128*1024。cdn

事務在undo log segment分配頁並寫入undo log的這個過程一樣須要寫入redo log。htm

當事務提交時,InnoDB存儲引擎會作:blog

  • 將undo log放入列表中,以供以後的purge操做。
  • 判斷undo log所在的頁是否能夠重用,若能夠分配給下個事務使用。事務提交時,將undo log放入一個鏈表中,是否能夠最終刪除有purge線程判斷。

4、Undo Log 格式

  • insert undo log

    在事務提交後能夠直接刪除,由於insert只有自己事務可見。事務

  • update undo log
相關文章
相關標籤/搜索