pg_checksum,存储 page 的校验值。 pd_flags,标志位 pg_lower,到空闲空间开头的偏移量。 pg_upper,到空闲空间结尾的偏移量。 pd_pagesize_version,页面大小和布局版本号信息 pd_prune_xid,页面上最早未删除 XMAX,如果没有则为 0。 ItemIdData--在 page header 之后,一个记录(偏移量,长度)对的数组,指向实际...
1.header data:数据头是page生成的时候随之产生的,由pageHeaderData定义结构,24个字节长,包含了page的相关信息,下面是数据结构: 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...
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...
TransactionId pd_prune_xid; ItemIdData pd_linp[1]; } PageHeaderData; 其中PageXLogRecPtr结构是一个无符号的64位整数,它的含义如下: PageXLogRecPtr结构和每个日志记录一一对应,同时LSN是全局统一管理,顺序增加的。 当缓冲区管理器(Bufmgr)写出脏数据页时,必须确保小于页面PageHeaderData中pd_lsn指向的Xlog日...
PageXLogRecPtr pd_lsn; //指向最后修改页面的日志记录uint16 pd_checksum;uint16 pd_flags;LocationIndex pd_lower;LocationIndex pd_upper;LocationIndex pd_special;uint16 pd_pagesize_version;TransactionId pd_prune_xid;ItemIdData pd_linp[1];} PageHeaderData; ...
* done so in heap_hot_prune_opt() if pd_prune_xid was old enough. But we * done so in heap_page_prune_opt() if pd_prune_xid was old enough. But we * still want to be able to remove rows that are too new to be removed * according to prstate->vistest, but that can be ...
Database cluster(数据库集簇): 由postgresql server管理的数据库的集合,下面由多个database组成。一个数据库集簇可以包含多个Database、多个User,每个Database以及Database中的所有对象都有它们的所有者:User。 Database数据库:Postgres 默认数据库、Template0 最精简模板、Template1 默认模板;数据库本身也是数据库对象...
p->pd_flags = 0; p->pd_lower = SizeOfPageHeaderData; p->pd_upper = pageSize - specialSize; p->pd_special = pageSize - specialSize; PageSetPageSizeAndVersion(page, pageSize, PG_PAGE_LAYOUT_VERSION); /* p->pd_prune_xid = InvalidTransactionId; done by above MemSet */ ...
LocationIndexpd_special;/* offset to start of special space */ uint16pd_pagesize_version; TransactionIdpd_prune_xid;/* oldest prunable XID, or zero if none */ ItemIdDatapd_linp[FLEXIBLE_ARRAY_MEMBER];/* line pointer array */
1. 数据库物理存储结构 数据库文件默认保存在initdb创建的数据目录中,它包含数据文件、参数文件、控制文件、数据库运行日志及WAL日志文件。PG不支持裸设备和块设备。 1.1 软件目录结构 $ ls -l /ups/app/pgsql-11/ total 16 drwxr-xr-x 2 ro