支援的版本:目前 (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

第 62 章。 索引存取方法介面定義

本章定義核心 PostgreSQL 系統與管理個別索引類型的索引存取方法之間的介面。核心系統除了這裡指定的內容外,對索引一無所知,因此可以透過編寫附加程式碼來開發全新的索引類型。

PostgreSQL 中的所有索引在技術上都稱為次要索引;也就是說,索引在物理上與其描述的表格檔案是分開的。每個索引都以其自身的物理關聯儲存,因此由 pg_class 目錄中的條目描述。索引的內容完全由其索引存取方法控制。實際上,所有索引存取方法都將索引劃分為標準大小的頁面,以便它們可以使用常規儲存管理器和緩衝區管理器來存取索引內容。(此外,所有現有的索引存取方法都使用 第 65.6 節 中描述的標準頁面配置,並且大多數都對索引元組標頭使用相同的格式;但這些決策並未強制存取方法。)

索引實際上是從某些資料鍵值到索引父表格中列版本(元組)的元組識別碼,或TID的映射。TID 包含區塊編號和該區塊內的項目編號(請參閱第 65.6 節)。此資訊足以從表格中擷取特定的列版本。索引並未直接意識到在 MVCC 下,可能存在同一邏輯列的多個現有版本;對於索引來說,每個元組都是需要其自身索引條目的獨立物件。因此,即使鍵值未變更,列的更新始終會為列建立全新的索引條目。(HOT 元組是此陳述的例外;但索引也不會處理它們。)當回收已死元組本身時,會回收已死元組的索引條目(透過清理)。

提交更正

如果您在文件中發現任何不正確、與您使用特定功能的經驗不符或需要進一步澄清的地方,請使用此表格來報告文件問題。