2025年9月25日: PostgreSQL 18 釋出!
支援的版本: 當前 (18) / 17 / 16 / 15 / 14 / 13
開發版本: 開發
不支援的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4

66.4. 可見性對映 (Visibility Map) #

每個堆關係都有一個可見性對映 (VM),用於跟蹤哪些頁面只包含對所有活動事務都可見的元組;它還用於跟蹤哪些頁面只包含已凍結的元組。它與主關係資料一起儲存在單獨的關係 fork 中,檔名以關係的 filenode 號加上 _vm 字尾命名。例如,如果一個關係的 filenode 是 12345,VM 將儲存在名為 12345_vm 的檔案中,該檔案與主關係檔案位於同一目錄中。請注意,索引沒有 VM。

可見性對映為每個堆頁面儲存兩個位。第一個位(如果設定)表示該頁面是“全可見”的,換句話說,該頁面不包含任何需要 vacuum 的元組。此資訊也可供 索引掃描 使用,以便僅使用索引元組來回答查詢。第二個位(如果設定)表示頁面上的所有元組都已凍結。這意味著即使是反回捲 vacuum 也不需要重新訪問該頁面。

該對映是保守的,因為我們確保當一個位被設定時,我們知道該條件為真,但如果一個位未被設定,它可能為真也可能為假。可見性對映位僅由 vacuum 設定,但會被頁面上的任何資料修改操作清除。

可以使用 pg_visibility 模組來檢查儲存在可見性對映中的資訊。

提交更正

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