每個堆關係都有一個可見性對映 (VM),用於跟蹤哪些頁面只包含對所有活動事務都可見的元組;它還用於跟蹤哪些頁面只包含已凍結的元組。它與主關係資料一起儲存在單獨的關係 fork 中,檔名以關係的 filenode 號加上 _vm
字尾命名。例如,如果一個關係的 filenode 是 12345,VM 將儲存在名為 12345_vm
的檔案中,該檔案與主關係檔案位於同一目錄中。請注意,索引沒有 VM。
可見性對映為每個堆頁面儲存兩個位。第一個位(如果設定)表示該頁面是“全可見”的,換句話說,該頁面不包含任何需要 vacuum 的元組。此資訊也可供 索引掃描 使用,以便僅使用索引元組來回答查詢。第二個位(如果設定)表示頁面上的所有元組都已凍結。這意味著即使是反回捲 vacuum 也不需要重新訪問該頁面。
該對映是保守的,因為我們確保當一個位被設定時,我們知道該條件為真,但如果一個位未被設定,它可能為真也可能為假。可見性對映位僅由 vacuum 設定,但會被頁面上的任何資料修改操作清除。
可以使用 pg_visibility 模組來檢查儲存在可見性對映中的資訊。
如果您在文件中發現任何不正確、與您對特定功能的實際體驗不符或需要進一步澄清的內容,請使用 此表單 報告文件問題。