Redrock Postgres 搜索 英文
版本: 9.3 / 9.4 / 9.5 / 9.6 / 10 / 11 / 12 / 13 / 14 / 15 / 16

73.4. 可见性映射 #

每个堆关系都有一个可见性映射 (VM) 来跟踪哪些页只包含所有活动事务都可见的元组;它还跟踪哪些页只包含冻结元组。它与主关系数据一起存储在单独的关系分支中,该分支以关系的文件节点号命名,并加上 _vm 后缀。例如,如果关系的文件节点为 12345,则 VM 存储在名为 12345_vm 的文件中,该文件与主关系文件位于同一目录中。请注意,索引没有 VM。

可见性映射为每个堆页存储两个位。如果设置了第一个位,则表示该页完全可见,或者换句话说,该页不包含任何需要清理的元组。此信息还可以由仅索引扫描使用,以仅使用索引元组来回答查询。如果设置了第二个位,则表示该页上的所有元组都已冻结。这意味着即使是反环绕清理也不必重新访问该页。

该映射是保守的,因为我们确保每当设置一个位时,我们都知道该条件为真,但如果一个位未设置,则它可能为真或不为真。可见性映射位仅由清理设置,但由页面上的任何数据修改操作清除。

pg_visibility模块可用于检查存储在可见性映射中的信息。