↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

百科 / 存储结构 / 物理结构

Database Page Layout

本节概述 PostgreSQL 表和索引内部所使用的页面格式。 [19] 序列和 TOAST 表的格式与普通表相同。 在下面的说明中,假定一个 字节 包含 8 个位。另外,术语 项 指的是存储在页面上的单个数据值。在表中,项是一行;在索引中,项是一条索引条目。 每个表和索引都存储为固定大小的 页面 数组(通常为 8 kB,不过在编译服务器时可以选择不同的页面大小)。在表中,所有页面在逻辑上都是等价的,因此某个特定项(行)可以存放在任意页面中。在索引中,第一页通常保留为 元页 ,用于保存控制信息…

当前查看 PostgreSQL 18。

中文定义与说明

存储结构 storage-page-layout。

同版本中文手册节选

本节概述 PostgreSQL 表和索引内部所使用的页面格式。[19] 序列和 TOAST 表的格式与普通表相同。

在下面的说明中,假定一个字节包含 8 个位。另外,术语项指的是存储在页面上的单个数据值。在表中,项是一行;在索引中,项是一条索引条目。

每个表和索引都存储为固定大小的页面数组(通常为 8 kB,不过在编译服务器时可以选择不同的页面大小)。在表中,所有页面在逻辑上都是等价的,因此某个特定项(行)可以存放在任意页面中。在索引中,第一页通常保留为元页,用于保存控制信息;并且根据索引访问方法的不同,索引中还可能存在不同类型的页面。

表 66.2 展示了页面的总体布局。每个页面包含五个部分。

查看完整中文手册与上下文。

说明

本节概述 PostgreSQL 表和索引内部所使用的页面格式。 [19] 序列和 TOAST 表的格式与普通表相同。 在下面的说明中,假定一个 字节 包含 8 个位。另外,术语 项 指的是存储在页面上的单个数据值。在表中,项是一行;在索引中,项是一条索引条目。 每个表和索引都存储为固定大小的 页面 数组(通常为 8 kB,不过在编译服务器时可以选择不同的页面大小)。在表中,所有页面在逻辑上都是等价的,因此某个特定项(行)可以存放在任意页面中。在索引中,第一页通常保留为 元页 ,用于保存控制信息;并且根据索引访问方法的不同,索引中还可能存在不同类型的页面。 表 66.2 展示了页面的总体布局。每个页面包含五个部分。

定义范围
同版本核心物理存储文档
页面布局——示意布局,未按比例绘制。
页首部24 字节行指针每项 4 字节空闲空间数据项特殊空间行指针增长方向数据项增长方向

页大小在编译时确定。特殊空间由访问方法决定,普通堆表页面不使用该区域。偏移与对齐规则以所选版本的手册定义为准。

页面总体布局

项目说明
PageHeaderData长 24 字节,包含页面的通用信息,例如空闲空间指针。
ItemIdData指向实际数据项的行指针数组。每项为一个(偏移,长度)对,占 4 字节。
空闲空间尚未分配的空间。新行指针从该区域的起始处分配,新数据项从末尾处分配。
项实际的数据项本身。
特殊空间索引访问方法专用数据。不同方法存储的内容不同,普通表中此区域为空。

PageHeaderData 布局

字段类型长度说明
pd_lsnPageXLogRecPtr8 字节LSN:该页最后一次变化所对应 WAL 记录的最后一个字节之后的位置。
pd_checksumuint162 字节页面校验和
pd_flagsuint162 字节标志位
pd_lowerLocationIndex2 字节空闲空间起始位置的偏移量
pd_upperLocationIndex2 字节空闲空间结束位置的偏移量
pd_specialLocationIndex2 字节特殊空间起始位置的偏移量
pd_pagesize_versionuint162 字节页面大小与布局版本号信息
pd_prune_xidTransactionId4 字节页面上最早的尚未修剪的 XMAX;没有则为零

HeapTupleHeaderData 布局

字段类型长度说明
t_xminTransactionId4 字节插入事务的 XID
t_xmaxTransactionId4 字节删除事务的 XID
t_cidCommandId4 字节插入和/或删除命令的 CID,与 t_xvac 共用存储位置
t_xvacTransactionId4 字节VACUUM 操作移动行版本时使用的 XID
t_ctidItemPointerData6 字节本行版本或较新行版本的当前 TID
t_infomask2uint162 字节属性数量及各种标志位
t_infomaskuint162 字节各种标志位
t_hoffuint81 字节用户数据的偏移量

相关条目

文档与源码

来源构建
版本
18.6
构建
https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2
来源指纹
555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f

版本比较

PostgreSQL 17 → 18: 无变化。

比较已记录的接口与属性,排除来源指纹和构建元数据。某个样本中没有记录,不能据此判断实际引入或移除的版本。

相关条目

导出 JSON · 返回存储结构 · 收录范围为 PostgreSQL 10 至 20;最早采样版本不一定是实际引入版本。