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

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

支持中的版本: 当前版本 (18) / 17 / 16 / 15 / 14
开发中的版本: 19 / 20devel
已结束支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1
预发布版本文档。 PostgreSQL 19beta4 为测试版本,最终发布内容可能有所不同。

第 63 章 索引访问方法接口定义

本章定义 PostgreSQL 核心系统与管理各个索引类型的索引访问方法之间的接口。除这里规定的内容之外,核心系统对索引一无所知,因此可以通过编写附加代码来开发全新的索引类型。

PostgreSQL 中所有索引在技术上都称为二级索引;也就是说,索引与它所描述的表文件在物理上是分离的。每个索引都存储为独立的物理关系,因此在 pg_class 目录中都有一个条目。索引的内容完全由其索引访问方法控制。实践中,所有索引访问方法都会把索引划分为标准大小的页面,以便使用常规的存储管理器和缓冲区管理器访问索引内容。(现有的所有索引访问方法还都使用第 66.6 节中描述的标准页面布局,而且大多数还对索引元组头使用相同的格式;但这些决定并不是访问方法必须遵循的。)

索引本质上是从一些数据键值到行版本(元组)在索引父表中的元组标识符(TIDs)的映射。一个 TID 由块号以及该块中的项号组成(见第 66.6 节)。这些信息足以从表中取出某个特定的行版本。索引并不直接知道在 MVCC 之下同一逻辑行可能会存在多个现存版本;对索引来说,每个元组都是一个独立对象,需要它自己的索引条目。因此,对一行的更新总会为该行创建全新的索引条目,即使键值并未改变也是如此。(HOT 元组是这一说法的例外;但索引同样不直接处理它们。)当死元组自身被回收时(通过清理),它们对应的索引条目也会被回收。

报告文档问题

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