2025年9月25日: PostgreSQL 18 釋出!
支援的版本: 當前 (18) / 17 / 16 / 15 / 14 / 13
開發版本: devel
不再支援的版本: 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

第 63 章. 索引訪問方法介面定義

本章定義了核心 PostgreSQL 系統與 索引訪問方法(負責管理單個索引型別)之間的介面。核心系統對索引的瞭解僅限於此處規定的內容,因此可以透過編寫附加程式碼來開發全新的索引型別。

PostgreSQL 中的所有索引在技術上被稱為 二級索引;也就是說,索引在物理上與其描述的表文件是分離的。每個索引都儲存為它自己的物理 關係,因此在 pg_class 目錄中有一個條目來描述它。索引的內容完全由其索引訪問方法控制。實際上,所有索引訪問方法都將索引劃分為標準大小的頁面,以便它們可以使用常規的儲存管理器和緩衝區管理器來訪問索引內容。(所有現有的索引訪問方法還使用 第 66.6 節 中描述的標準頁面佈局,並且大多數使用相同的格式來表示索引元組頭;但這些決定並不強制一個訪問方法。)

索引有效地是從某些資料鍵值到 元組識別符號(或TID)的對映,這些元組識別符號指向索引父表中的行版本(元組)。TID 由一個塊號和一個塊內的項號組成(參見 第 66.6 節)。這些資訊足以從表中獲取一個特定的行版本。索引並不直接感知在 MVCC 下同一個邏輯行可能存在多個版本;對索引而言,每個元組都是一個獨立的對它需要有自己的索引條目的物件。因此,對行的更新總是會為該行建立全新的索引條目,即使鍵值沒有改變。(HOT 元組 是對該陳述的一個例外;但索引也不會處理這些。)死元組的索引條目會在死元組本身被回收時(透過 vacuum)被回收。

提交更正

如果您在文件中發現任何不正確的內容、與您對特定功能的實際使用不符的地方,或者需要進一步澄清的地方,請使用 此表單 報告文件問題。