InnoDB文档笔记(三)—— Undo Log
接上篇,官網地址
一、簡介
Undo Log是一組因讀寫事務產生的Undo log records 的集合,是數據的修改記錄,是邏輯日志。
Undo Logs由undo log segments組成,包含rollback segments。InnoDB最大支持128個rollback segment,其中32分配給臨時表空間,96個分配給常規表的事務數據修改,innodb_undo_logs控制rollback segment的數量。undo segment位于共享表空間內。
Undo Log用于事務的rollback,以及支持MVCC
二、Undo Slot
rollback segment所支持的事務數取決于undo slot的數量以及每個事務所需的undo logs數量。
number of undo slots in a rollback segment = innodb page size / 16
三、Undo Log 存儲
基于段 rollback segment存儲,每個rollback segment記錄1024個undo log segment。基于這樣,支持在線事務限制為128*1024。
事務在undo log segment分配頁并寫入undo log的這個過程同樣需要寫入redo log。
當事務提交時,InnoDB存儲引擎會做:
- 將undo log放入列表中,以供之后的purge操作。
- 判斷undo log所在的頁是否可以重用,若可以分配給下個事務使用。事務提交時,將undo log放入一個鏈表中,是否可以最終刪除有purge線程判斷。
四、Undo Log 格式
- insert undo log
在事務提交后可以直接刪除,因為insert只有本身事務可見。
- update undo log
轉載于:https://juejin.im/post/5caffd936fb9a06877393fdd
總結
以上是生活随笔為你收集整理的InnoDB文档笔记(三)—— Undo Log的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows api 枚举进程pid
- 下一篇: nagios监控告警之网络流量监控(附p