整个rollback segment 初始化完成后将space id和page no 写回到 transaction system segment header中。

Posted liyanyan665

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了整个rollback segment 初始化完成后将space id和page no 写回到 transaction system segment header中。相关的知识,希望对你有一定的参考价值。

sys_header = trx_sysf_get(mtr); //获取 5号 block指针 跳过 FIL_PAGE_DATA 38U

trx_sysf_rseg_set_space(sys_header, rseg_slot_no, space, mtr); //设置space

trx_sysf_rseg_set_page_no(sys_header, rseg_slot_no, page_no, mtr); //设置 no
下面是 rollback segment header的结构

/* Transaction rollback segment header */
/*-------------------------------------------------------------*/
#define TRX_RSEG_MAX_SIZE 0 /* Maximum allowed size for rollback
segment in pages */
#define TRX_RSEG_HISTORY_SIZE 4 /* Number of file pages occupied
by the logs in the history list */ //history 链表大小
#define TRX_RSEG_HISTORY 8 /* The update undo logs for committed
transactions */ //链表头base node 他们通常调用include/fut0lst.ic中的函数进行更改
#define TRX_RSEG_FSEG_HEADER (8 + FLST_BASE_NODE_SIZE)
/* Header for the file segment where
this page is placed */
#define TRX_RSEG_UNDO_SLOTS (8 + FLST_BASE_NODE_SIZE + FSEG_HEADER_SIZE)
/* Undo log segment slots */ //
/*-------------------------------------------------------------*/
作为 base node的 TRX_RSEG_HISTORY,我们可以看到定义如下:

/* We define the field offsets of a base node for the list */
#define FLST_LEN 0 /* 32-bit list length field */
#define FLST_FIRST 4 /* 6-byte address of the first element
of the list; undefined if empty list */
#define FLST_LAST (4 + FIL_ADDR_SIZE) /* 6-byte address of the
last element of the list; undefined
if empty list */

#define FIL_ADDR_PAGE 0 /* first in address is the page offset */
#define FIL_ADDR_BYTE 4 /* then comes 2-byte byte offset within page*/
#endif /* !UNIV_INNOCHECKSUM */
#define FIL_ADDR_SIZE 6 /* address size is 6 bytes */
多了一个长度

到这里128 rollback segment已经初始化完成,并且,每个都包含1024个 undo segment slots。

以上是关于整个rollback segment 初始化完成后将space id和page no 写回到 transaction system segment header中。的主要内容,如果未能解决你的问题,请参考以下文章

进行rollback segment header的初始化

_OFFLINE_ROLLBACK_SEGMENTS 和 _CORRUPTED_ROLLBACK_SEGMENTS的区别

Rollback Segment Configuration & Tips (Doc ID 69464.1)

整个过程初始化完成后的分布图

事务嵌套问题总结-rollback-only异常

Greenplum -- segment 死机后恢复