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

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

不受支持的版本: 7.4 / 7.3 / 7.2 / 7.1 / 7.0 / 6.5 / 6.4
历史版本PostgreSQL 6.4 已于 2003 年 10 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本手册首页。

第 63 章 页文件

摘要

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

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

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

63.1. 页结构

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

表 63.1. 页面布局示例

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


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

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

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

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。