每個堆積關係(heap relation)都有一個可見性地圖 (Visibility Map, VM) 來追蹤哪些頁面僅包含已知對所有活動交易可見的元組;它也追蹤哪些頁面僅包含凍結的元組。 它與主關係資料一起儲存在一個單獨的關係分支中,該分支以關係的 filenode 數字命名,加上 _vm
後綴。 例如,如果關係的 filenode 是 12345,則 VM 儲存在一個名為 12345_vm
的檔案中,該檔案與主關係檔案位於同一目錄中。 請注意,索引沒有 VM。
可見性地圖為每個堆積頁面儲存兩個位元。 第一個位元,如果設置,表示該頁面是完全可見的,或者換句話說,該頁面不包含任何需要 vacuum 的元組。 此資訊也可以被僅索引掃描使用,僅使用索引元組來回答查詢。 第二個位元,如果設置,表示頁面上的所有元組都已被凍結。 這意味著即使是防止環繞(anti-wraparound)的 vacuum 也不需要重新訪問該頁面。
該地圖是保守的,因為我們確保每當設置一個位元時,我們知道該條件為真,但如果一個位元未被設置,它可能是真也可能不是真。 可見性地圖位元僅由 vacuum 設置,但會被頁面上任何資料修改操作清除。
可以使用 pg_visibility 模組來檢查儲存在可見性地圖中的資訊。
如果您在文件中發現任何不正確、與特定功能的經驗不符或需要進一步澄清的地方,請使用此表單回報文件問題。