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

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

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

第 58 章 页文件

摘要

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

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

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

58.1. 页结构

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

表 58.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 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。