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过程&内容解析
注册阶段
- 用两个registered_buffers记录新旧页面buffer
XLogRegisterBuffer(0, newbu

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

被折叠的 条评论
为什么被折叠?



