支持的版本:当前 (17) / 16 / 15 / 14 / 13
开发版本:devel
不支持的版本:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4

65.4. 可见性映射 #

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

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

该映射是保守的,因为我们确保只要设置一位,我们就知道条件为真,但是如果没有设置一位,它可能为真,也可能不为真。 可见性映射位仅由清理设置,但会被页面上的任何数据修改操作清除。

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

提交更正

如果您在文档中看到任何不正确、与您使用特定功能的体验不符或需要进一步澄清的内容,请使用此表单报告文档问题。