pg_visibility
pg_visibility
The pg_visibility> module provides a means for examining the
visibility map (VM) and page-level visibility information.
These routines return information about three different bits. The
all-visible bit in the visibility map indicates that every tuple on
a given page of a relation is visible to every current transaction. The
all-frozen bit in the visibility map indicates that every tuple on the
page is frozen; that is, no future vacuum will need to modify the page
until such time as a tuple is inserted, updated, deleted, or locked on
that page. The page-level PD_ALL_VISIBLE bit has the
same meaning as the all-visible bit in the visibility map, but is stored
within the data page itself rather than a separate data structure. These
will normally agree, but the page-level bit can sometimes be set while the
visibility map bit is clear after a crash recovery; or they can disagree
because of a change which occurs after pg_visibility> examines
the visibility map and before it examines the data page.
Functions which display information about PG_ALL_VISIBLE>
are much more costly than those which only consult the visibility map,
because they must read the relation's data blocks rather than only the
(much smaller) visibility map.
Functions
pg_visibility_map(regclass, blkno bigint, all_visible OUT boolean, all_frozen OUT boolean) returns record
Returns the all-visible and all-frozen bits in the visibility map for
the given block of the given relation.
pg_visibility(regclass, blkno bigint, all_visible OUT boolean, all_frozen OUT boolean, pd_all_visible OUT boolean) returns record
Returns the all-visible and all-frozen bits in the visibility map for
the given block of the given relation, plus the
PD_ALL_VISIBILE> bit for that block.
pg_visibility_map(regclass, blkno OUT bigint, all_visible OUT boolean, all_frozen OUT boolean) returns record
Returns the all-visible and all-frozen bits in the visibility map for
each block the given relation.
pg_visibility(regclass, blkno OUT bigint, all_visible OUT boolean, all_frozen OUT boolean, pd_all_visible OUT boolean) returns record
Returns the all-visible and all-frozen bits in the visibility map for
each block the given relation, plus the PD_ALL_VISIBLE>
bit for each block.
pg_visibility_map_summary(regclass, all_visible OUT bigint, all_frozen OUT bigint) returns record
Returns the number of all-visible pages and the number of all-frozen
pages in the relation according to the visibility map.
By default, these functions are not publicly executable.
Author
Robert Haas rhaas@postgresql.org