postgressql——PGPROC && XLOG(6)

本文详细介绍了PostgreSQL中PGPROC相关结构,包括PROC和XACT的内存布局以及其优化。接着,文章阐述了XLOG的注册过程,解释了页面注册缓冲区和rdata槽位的使用。此外,还分析了日志组装写入的流程,以及UPDATE操作生成XLOG的详细步骤,包括注册阶段和组装阶段。最后,讨论了一条XLOG内部的四个主要组成部分,强调了PostgreSQL如何保证XLOG操作的原子性。
摘要由CSDN通过智能技术生成

PGPROC相关结构

在共享内存中,核心数据结构围绕PROC_HDR指向的两个list:PROC和XACT
PRCO内存连续,维护链表结构方便申请释放,对应每个后台服务进程,PID为OS标识、PGPROCNO为内部标识
XACT内存连续,维护快照需要的xmin和xid,XACT从PROC拆出来是为了更高的cache line命中率,但是因为xmin的频繁更新,造成更严重的cache line invaild,PG14把这个结构完全优化掉了。

Xlog注册过程

一个页面使用一个register_buffer槽位,最多5个页面
每个页面的其他信息使用rdata槽位形成链表,使用到的rdata用register_buffer的指针指向
maindata独占一些recdata块,保存registerData注册下来的数据
在这里插入图片描述

日志组装写入流程图

组装过程:只有header信息会memcry到链表第一个data区域,其他信息例如页面image、元组内容等都是指针挂在后面的data区域
写入过程:写入只需要遍历list,然后memcpy即可
在这里插入图片描述

update生成XLOG过程&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值