举报投诉联系我们 手机版 热门标签 编程学
您的位置:编程学 > PostgreSQL 系统列

PostgreSQL 系统列

2023-06-10 21:18 PostgreSQL 系统列

 PostgreSQL 系统列

每一个表都拥有一些由系统隐式定义的system columns。因此,这些列的名字不能像用户定义的列一样使用(注意这种限制与名称是否为关键词没有关系,即便用引号限定一个名称也无法绕过这种限制)。 事实上用户不需要关心这些列,只需要知道它们存在即可。

tableoid

包含这一行的表的OID。该列是特别为从继承层次(见第 5.10 节)中选择的查询而准备,因为如果没有它将很难知道一行来自于哪个表。tableoid可以与pg_classoid列进行连接来获得表的名称。

xmin

插入该行版本的事务身份(事务ID)。一个行版本是一个行的一个特别版本,对一个逻辑行的每一次更新都将创建一个新的行版本。

cmin

插入事务中的命令标识符(从0开始)。

xmax

删除事务的身份(事务ID),对于未删除的行版本为0。对于一个可见的行版本,该列值也可能为非零。这通常表示删除事务还没有提交,或者一个删除尝试被回滚。

cmax

删除事务中的命令标识符,或者为0。

ctid

行版本在其表中的物理位置。注意尽管ctid可以被用来非常快速地定位行版本,但是一个行的ctid会在被更新或者被VACUUM FULL移动时改变。因此,ctid不能作为一个长期行标识符。 应使用主键来标识逻辑行。

事务标识符也是32位量。在一个历时长久的数据库中事务ID同样会绕回。但如果采取适当的维护过程,这不会是一个致命的问题,详见第 24 章。但是,长期(超过10亿个事务)依赖事务ID的唯一性是不明智的。

命令标识符也是32位量。这对一个事务中包含的SQL命令设置了一个硬极限: 232(40亿)。在实践中,该限制并不是问题 — 注意该限制只是针对SQL命令的数目而不是被处理的行数。同样,只有真正 修改了数据库内容的命令才会消耗一个命令标识符。


阅读全文
以上是编程学为你收集整理的 PostgreSQL 系统列全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
  •  PostgreSQL 依赖跟踪

    PostgreSQL 依赖跟踪

    2023-05-31

    当我们创建一个涉及到很多具有外键约束、视图、触发器、函数等的表的复杂数据库结构时,我们隐式地创建了一张对象之间的依赖关系...

  •  PostgreSQL 介绍

    PostgreSQL 介绍

    2023-05-24 PostgreSQL 介绍

    PostgreSQL为开发者提供了一组丰富的工具来管理对数据的并发访问。在内部,数据一致性通过使用一种多版本模型(多版本并发控制,...

  •  PostgreSQL pg_rewrite

    PostgreSQL pg_rewrite

    2023-04-12

    目录pg_rewrite存储对于表和视图的重写规则。表51.43.pg_rewrite Columns列类型描述 oidoid行标识符 rulenamename规则名称 ev_cl...

  •  PostgreSQL pg_config

    PostgreSQL pg_config

    2023-06-09 PostgreSQL pg_config

    视图pg_config描述了当前安装的PostgreSQL版本中的编译时配置参数。它存在的本意是用于那些要和PostgreSQL交互的软件包,让它们...

  •  PostgreSQL pg_timezone_abbrevs

    PostgreSQL pg_timezone_abbrevs

    2023-05-10

    视图pg_timezone_abbrevs提供了对当前被时间输入例程识别的时区缩写的列表。当timezone_abbreviations运行时参数被修改,此视图...

© 2024 编程学 bianchengxue.com 版权所有 联系我们
桂ICP备19012293号-7 返回底部