# 第 62 章 索引访问方法接口定义
目录
本章定义了核心 PostgreSQL 系统和索引访问方法,它管理各个索引类型。除了此处指定的内容之外,核心系统对索引一无所知,因此可以通过编写附加代码来开发全新的索引类型。
PostgreSQL 中的所有索引在技术上都称为二级索引;也就是说,索引与它所描述的表文件在物理上是分开的。每个索引都存储为自己的物理关系因此由条目中的条目描述pg_class
目录。索引的内容完全受其索引访问方法的控制。实际上,所有索引访问方法都将索引划分为标准大小的页面,以便它们可以使用常规存储管理器和缓冲区管理器来访问索引内容。(所有现有的索引访问方法还使用在第 70.6 节,并且大多数索引元组标题使用相同的格式;但这些决定并非强制于访问方法。)
索引实际上是从某些数据键值到元组标识符,或 TID,索引的父表中的行版本(元组)。TID 由块编号和该块中的项目编号组成(参见第 70.6 节)。这是从表中获取特定行版本的足够信息。索引并不直接意识到在 MVCC 下,同一逻辑行可能存在多个现存版本;对于索引,每个元组都是一个独立的对象,需要自己的索引条目。因此,行的更新总是为该行创建全新的索引条目,即使键值没有改变。(HOT 元组是该语句的一个例外;但索引也不处理这些。)当死元组本身被回收时,死元组的索引条目被回收(通过清理)。