Visibility map (PostgreSQL)
A PostgreSQL visibility map records all-visible and all-frozen status for each heap page in a separate relation fork.
The all-visible bit supports skipping heap visibility checks during index-only scans. The all-frozen bit records that the page needs no further freezing until it changes. Indexes do not have their own visibility maps. [1] [2]
The map is conservative: a clear bit does not establish that the corresponding property is false. Ordinary data changes clear map bits, and vacuum establishes them. A tuple-header hint bit and the heap page's PD_ALL_VISIBLE flag are separate metadata, not alternative names for the map. [1] [2]
pg_visibility_map_summary counts marked pages from the map; it is not a comparison against every stored payload. Functions inspecting PD_ALL_VISIBLE also read heap pages. Choosing an inspection function therefore changes read coverage. Visibility metadata does not certify content integrity. [2]
Relations
Citations
Sources & caveats
- Describes PostgreSQL 16 visibility metadata. A count of marked pages is distinct from validation of the map or expected application content.