codecamp

PostgreSQL 可见性映射

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

可见性映射仅为每个堆页面存储两个位。第一位如果被设置, 表示该页面上的元组都是可见的,或者换句话说该页面不含有 任何需要被清理的元组。这些信息也可以被index-only scans用来只依靠索引元组回答查询。第二位如果 被设置,表示该页面上的元组都已经被冻结。这也意味着防回卷 清理操作也不需要重新访问该页面。

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

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


PostgreSQL 空闲空间映射
PostgreSQL 初始化分支
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

PostgreSQL SQL语言

PostgreSQL 服务器管理

PostgreSQL 客户端接口

PostgreSQL 服务器编程

PostgreSQL 参考

PostgreSQL 内部

PostgreSQL 附录

PostgreSQL 参考书目

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }