Postgresql

讓 postgres 的 pg_dump 導出索引

  • June 7, 2018

我有一個計算起來非常昂貴的索引,我正在尋找以簡單複制方式恢復或傳輸它的方法。當然,它將與基礎數據一起完成。

或者我可以用文件來做嗎?類似於使用 pg_class.relfilenode 查找索引所在的位置,並複制這些文件。

您想要的只有通過文件系統級備份才能實現。索引條目最終包含對錶行的元組 ID (TID) 的引用,它本質上是指向數據庫文件中記錄的物理指針。每次行更新都會將其移動到具有不同 TID 的不同位置,從而使舊 TID 無用,除非同時更新。

從轉儲中恢復的表將具有(可能所有)與原始不同的行 TID;如果您以某種方式設法複製原始索引並使用它來訪問這個新表,那麼結果將是未定義的。

只有索引文件的文件系統級備份以及相應的表文件才能保證 TID 保持不變。

引用自:https://dba.stackexchange.com/questions/209017