Transcation Syatem Header Page
存储内容
- TRX_SYS_TRX_ID_STORE:InnoDB定期持久化的事务ID
- TRX_SYS_RSEGS:128个回滚段的数组首地址;第i个回滚段位于:
- space_id:(TRX_SYS_RSEGS + i * TRX_SYS_RSEG_SLOT_SIZE) + TRX_SYS_RSEG_SPACE
- page_no:(TRX_SYS_RSEGS + i * TRX_SYS_RSEG_SLOT_SIZE) + TRX_SYS_RSEG_PAGE_NO
注:TRX_SYS_TRX_ID_STORE、TRX_SYS_RSEGS等指的都是在页面内的偏移量
Rollback Segment Header Page
每一个Rseg地址指向的是一个【Rollback Segment Header Page】
存储内容
- TRX_RSEG_MAX_SIZE(0,4字节):该回滚段允许的最大容量(number in page)
- TRX_RSEG_HISTORY_SIZE(4,4字节):在History List中,事务所占用的容量(number in page)
- TRX_RSEG_HISTORY(8,16字节):History List链表首地址
- TRX_RSEG_FSEG_HEADER(24,10字节):暂时未知…
- TRX_RSEG_UNDO_SLOTS(34,1024*4字节):该回滚段的1024个Slot数组首地址,每个Slot占用4字节
Undo Log Header Page
每一个Slot地址指向的是一个【Undo Log Header Page】
存储内容:
- 两个“页级别”Header:Undo Page Header / Undo Segment Header
- 若干条Undo日志记录:其中每一条都由【Undo Log Header】 / 日志记录内容组成
Undo Page Header:
- TRX_UNDO_PAGE_TYPE(0,2字节):类型;INSERT/UPDATE
- TRX_UNDO_PAGE_START(2,2字节):(时间上)最近一个事务的Undo日志记录其实地址
- TRX_UNDO_PAGE_FREE(4,2字节):当前页面空闲的其实地址
- TRX_UNDO_PAGE_NODE(6,12字节):构成Slot的双向链表,存储前一个Slot/后一个Slot的地址(双向链表的指针域)
Undo Segment Header:
- TRX_UNDO_STATE(18,2字节):事务状态;TRX_UNDO_ACTIVE …
- TRX_UNDO_LAST_LOG(20,2字节):当前页面的最后一条Undo日志记录的【Undo Log Header】
- TRX_UNDO_FSEG_HEADER(24,10字节):暂不清楚…
- TRX_UNDO_PAGE_LIST(34,16字节):对于同一个Slot下的【Undo Log Header Page】和【Normal Undo Page】构成的双向链表