当修改PG数据页页头等元数据信息时是否会产生WAL?
研究PG WAL机制时想到个问题:进行插入、删除、更新等操作时,需要通过WAL来保证其一致性,以及复制构建高可用环境,当修改数据页页头等元数据信息时是否会产生WAL?
凡是产生WAL的地方都会有函数进行预先判断:RelationNeedsWAL。例如插入一个tuple时:heap_insert函数。
if (!(options & HEAP_INSERT_SKIP_WAL) && RelationNeedsWAL(relation)){ ... recptr = XLogInsert(RM_HEAP_ID, info); PageSetLSN(page, recptr);}
页头结构:
typedef struct PageHeaderData{ XXX LSN is member of *any* block, not only page-organized ones PageXLogRecPtr pd_lsn; LSN: next byte after last byte of xlog * record for last change to this page uint16 pd_checksum; checksum uint16 pd_flags; flag bits, see below LocationIndex pd_lower; offset to start of free space LocationIndex pd_upper; offset to end of free space LocationIndex pd_special; offset to start of special space uint16 pd_pagesize_version; TransactionId pd_prune_xid; oldest prunable XID, or zero if none ItemIdData pd_linp[FLEXIBLE_ARRAY_MEMBER]; line pointer array } PageHeaderData;
插入的话肯定会修改页头信息的。仔细看这段代码,却没找到修改页头时产生WAL的地方。甚至,修改页头的LSN字段pg_lsn时PageSetLSN,该函数在日志拷贝到WAL BUFFER后才进行修改:XLogInsert。而修改lsn的代码也不涉及WAL日志的生成:
#define PageXLogRecPtrSet(ptr, lsn) ((ptr).xlogid = (uint32) ((lsn) >> 32), (ptr).xrecoff = (uint32) (lsn))
heap_insert函数后续也没有涉及WAL操作的代码了。难道修改数据页页头等信息时不产生WAL?
这样的话,进行复制时,是否会有问题,主机页头中lsn信息未同步到备机,对其回放会产生问题吧。
这个疑惑后续深入研究,是否他会通过现有WAL日志解决,而确实不需要产生WAL。大家了解的话,请教下,希望能够得到帮助。

图片新闻
最新活动更多
-
6月13日立即参评>> 【评选】维科杯·OFweek2025中国工业自动化及数字化行业年度评选
-
7.30-8.1火热报名中>> 全数会2025(第六届)机器人及智能工厂展
-
7月30-31日报名参会>>> 全数会2025中国激光产业高质量发展峰会
-
即日-2025.8.1立即下载>> 《2024智能制造产业高端化、智能化、绿色化发展蓝皮书》
-
精彩回顾立即查看>> 宾采尔激光焊接领域一站式应用方案在线研讨会
-
精彩回顾立即查看>> 【在线会议】安森美Hyperlux™ ID系列引领iToF技术革新
推荐专题
- 1 智造赋能,生态共融:大联大携手产业伙伴,共绘新质工业宏伟蓝图
- 2 谁将成为行业榜样?维科杯·OFweek2025中国工业自动化及数字化行业年度评选等您来参与!
- 3 【重磅来袭】6月17日上海见!全球智造巨头聚首,60余场前沿论坛,制造业数字化盛会邀您共启数智破局之旅!
- 4 安森美正式参评“维科杯·OFweek 2025中国工业自动化与数字化行业优秀产品奖”
- 5 开目新一代MOM:AI赋能高端制造的破局之道
- 6 当数智工业邂逅大湾区,看PHIIDF2025如何破界,链动全球!
- 7 抢先解锁!全数会2025机器人及智能工厂展览会核心亮点速递
- 8 iEi威强电邀您共襄AIAE Expo 2025北京国际工业自动化盛会,探索智能工业新边界!
- 9 世界计量日盛会启幕,聚焦测量体系变革:质量、效率与动力
- 10 欧姆龙正式参评“维科杯·OFweek 2025中国工业自动化与数字化行业优秀产品奖”
发表评论
请输入评论内容...
请输入评论/评论长度6~500个字
暂无评论
暂无评论