59.4. 可见性映射

每一个堆关系都有一个可见性映射(VM)用来跟踪哪些页面只包含已知对所有活动事务可见的元组。它伴随着主关系数据被存储在一个独立的关系分支中,以该关系的文件节点号加上一个_vm后缀来命名。例如,如果一个关系的文件节点为12345,其VM被存储在名为12345_vm的文件中,该文件域主关系文件在同一个目录中。注意索引没有VM。

可见性映射仅为每个堆页面存储一个位。一个被设置的位表示在该页面上所有的元组已知对于所有事务都是可见的。这表示该页面不含有任何需要被清理的元组。这些信息也可以被用于index-only scans来使用索引元组回答查询。

该映射是保守的,我们可以确定不论何时一个位被设置,那就说明条件为真,但是如果一个位没有被设置,它可能为真也可能不为真。可见性映射的位只会被清理操作设置,但是可以被任何在页面上进行的数据修改操作清除。