接上篇,官網地址html
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線程
rollback segment所支持的事務數取決於undo slot的數量以及每一個事務所需的undo logs數量。3d
number of undo slots in a rollback segment = innodb page size / 16日誌
基於段 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線程判斷。
在事務提交後能夠直接刪除,由於insert只有自己事務可見。事務