事务提交与XLog日志分析

这篇博客探讨了预写式日志WAL的概念,强调数据库在更新元组前必须先将XLog日志记录写入磁盘。XLog记录包含日志头、类型、备份文件描述和数据,通过资源管理器号识别操作类型。日志头信息由XLogRecord结构体描述,记录了RMGR数据长度、事务ID和日志总长度。单条XLOG日志能备份最多4个文件块,内存块备份通过设置xl_info低4位标记。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

根据预写式日志WAL的定义,数据库在修改磁盘上的元组前,必须先将日志记录刷回到磁盘。XLog的组织形式如下,依次为日志记录头,日志类型(事务操作日志、事务提交或终止日志或是检查点日志等)、备份文件块描述信息以及备份文件块数据。数据库系统把各种需要记录日志的数据分类,分配给与他们对应的资源管理器号,系统在恢复或者读取日志记录时,能够通过资源管理器号和日志头信息中的xl_info字段(高4位),知道数据库对源数据做了哪种操作,从而正确的调用相应的响应函数(如redo函数等)。


PG_RMGR(RM_XLOG_ID, "XLOG", xlog_redo, xlog_desc, NULL, NULL)
PG_RMGR(RM_XACT_ID, "Transaction", xact_redo, xact_desc, NULL, NULL)
PG_RMGR(RM_SMGR_ID, "Storage", smgr_redo, smgr_desc, NULL, NULL)
PG_RMGR(RM_CLOG_ID, "CLOG", clog_redo, clog_desc, NULL, NULL)
PG_RMGR(RM_DBASE_ID, "Database", dbase_redo, dbase_desc, NULL, NULL)
PG_RMGR(RM_TBLSPC_ID, "Tablespace", tblspc_redo, tblspc_desc, NULL, NULL)
PG_RMGR(RM_MULTIXACT_ID, "MultiXact", multixact_redo, multixact_desc, NULL, NULL)
PG_RMGR(RM_RELMAP_ID, "RelMap", relmap_redo, relmap_desc, NULL, NULL)
PG_RMGR(RM_STANDBY_ID, "Standby", standby_redo, standby_desc, NULL, NULL)
PG_RMGR(RM_HEAP
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值