↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

百科 / 存储结构 / 物理结构

Visibility Map

每个堆关系都有一个可见性映射(VM),用于跟踪哪些页面只包含已知对所有活动事务都可见的元组;它还会跟踪哪些页面只包含已冻结的元组。它与主关系数据并列存放在一个独立的关系分支中,名称由关系的文件节点编号加上 _vm 后缀构成。例如,如果某关系的文件节点是 12345,那么 VM 会存储在名为 12345_vm 的文件中,与主关系文件位于同一目录。请注意,索引没有 VM。

当前查看 PostgreSQL 18.6。

说明

每个堆关系都有一个可见性映射(VM),用于跟踪哪些页面只包含已知对所有活动事务都可见的元组;它还会跟踪哪些页面只包含已冻结的元组。它与主关系数据并列存放在一个独立的关系分支中,名称由关系的文件节点编号加上 _vm 后缀构成。例如,如果某关系的文件节点是 12345,那么 VM 会存储在名为 12345_vm 的文件中,与主关系文件位于同一目录。请注意,索引没有 VM。

定义范围
同版本核心物理存储文档

手册定义

66.4. 可见性映射

每个堆关系都有一个可见性映射(VM),用于跟踪哪些页面只包含已知对所有活动事务都可见的元组;它还会跟踪哪些页面只包含已冻结的元组。它与主关系数据并列存放在一个独立的关系分支中,名称由关系的文件节点编号加上 _vm 后缀构成。例如,如果某关系的文件节点是 12345,那么 VM 会存储在名为 12345_vm 的文件中,与主关系文件位于同一目录。请注意,索引没有 VM。

可见性映射为每个堆页面存储两个位。第一位若被置位,表示该页面是全部可见(all-visible),换句话说,该页面不包含任何需要被清理的元组。这些信息还可以被仅索引扫描用来只依据索引元组回答查询。第二位若被置位,则表示页面上的所有元组都已经被冻结。这意味着,即使是防回卷清理也不必重新访问该页面。

这个映射是保守的,也就是说,只要某个位被置位,我们就能确定相应条件确实成立;但如果某个位没有置位,该条件既可能为真,也可能不为真。可见性映射位只会由 VACUUM 设置,但页面上的任何数据修改操作都会把它们清除。

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

相关条目

文档与源码

来源构建
版本
18.6
构建
https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2
来源指纹
555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f

版本比较

PostgreSQL 17 → 18: 无变化。

比较已记录的接口与属性,排除来源指纹和构建元数据。某个样本中没有记录,不能据此判断实际引入或移除的版本。

相关条目

导出 JSON · 返回存储结构 · 收录范围为 PostgreSQL 10 至 20;最早采样版本不一定是实际引入版本。