↑↓ 选择↵ 打开⌫ 切换范围完整搜索

PG.CENTER 连接 PostgreSQL 文档、百科与生态知识。由 Pigsty 维护。

已结束支持的版本: 7.4 / 7.3 / 7.2 / 7.1 / 7.0 / 6.5 / 6.4
历史版本。 PostgreSQL 7.0 已结束支持。 请参阅 当前版本手册.

第 68 章 页文件

摘要

对数据库文件默认页格式的描述。

本节概述 Postgres 类使用的页格式。用户定义的访问方法不必使用这种页格式。

在下面的说明中,假定一个字节(byte)包含 8 位。此外,术语项(item)指存储在 Postgres 类中的数据。

68.1. 页结构

下表展示了普通 Postgres 类和 Postgres 索引类(例如 B-tree 索引)中的页面是如何组织的。

表 68.1. 页面布局示例

项描述
itemPointerData 
filler 
itemData... 
未分配空间 
ItemContinuationData 
特殊空间 
``ItemData 2'' 
``ItemData 1'' 
ItemIdData 
PageHeaderData 


每个页面的前 8 个字节由页头(PageHeaderData)组成。在页头中,前三个 2 字节整数字段(lower、upper 和 special)分别表示到未分配空间开始处、到未分配空间结束处以及到特殊空间开始处的字节偏移。特殊空间是页面末尾的一个区域,它在页面初始化时分配,并包含某种访问方法特有的信息。页头的最后 2 个字节 opaque 编码页面大小和页面内部碎片的信息。每个页面都存储页面大小,因为缓冲池中的帧在一个类内可以逐帧细分为大小相等的页面。内部碎片信息用来帮助确定何时应进行页面重组。

页头之后是项标识符(ItemIdData)。新的项标识符从未分配空间的前四个字节分配。由于项标识符在被释放之前从不移动,其索引可用来指示一个项在页面上的位置。事实上,Postgres 创建的每个指向项的指针(ItemPointer)都由一个帧号和一个项标识符的索引组成。项标识符包含到项开始处的字节偏移、以字节为单位的长度以及一组影响其解释的属性位。

项本身存储在从未分配空间末尾向后分配的空间中。通常不对项进行解释。但当项太长而无法放在单个页面上或希望对项进行分片时,项会被切分,每一片按下述方式作为不同的项处理。第一片到倒数第二片放在项延续结构(ItemContinuationData)中。该结构包含指向下一片的 itemPointerData 和这一片本身。最后一片按正常方式处理。

报告文档问题

阅读 上游文档. 反馈更正前请先核对 当前版本手册.