ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

PostgreSQL-系统列

2022-09-02 22:30:45  阅读:279  来源: 互联网

标签:事务 PostgreSQL 删除 系统 命令 版本 ctid 标识符


每个表都有几个由系统隐式定义的系统列。因此,这些名称不能用作用户定义列的名称。(请注意,这些限制与名称是否是关键字是分开的;引用名称不会让您逃避这些限制。)您实际上不需要关心这些列;只知道它们存在。

tableoid

包含此行的表的 OID。该列对于从分区表或继承层次结构中进行选择的查询特别方便,因为没有它,很难判断一行来自哪个单独的表。tableoid 可以与 pg_class 的 oid 列连接以获得表名。

xmin

此行版本的插入事务的标识(事务 ID)。(行版本是行的单个状态;行的每次更新都会为同一逻辑行创建一个新的行版本。)

cmin

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

xmax

删除事务的标识(事务 ID),或者对于未删除的行版本为零。在可见行版本中,此列可能不为零。这通常表明删除事务尚未提交,或者尝试的删除已回滚。

cmax

删除事务中的命令标识符,或零。

ctid

行版本在其表中的物理位置。请注意,尽管 ctid 可用于非常快速地定位行版本,但如果行的 ctid 被 VACUUM FULL 更新或移动,它会发生变化。因此 ctid 作为长期行标识符是无用的。应该使用主键来标识逻辑行。

事务标识符也是 32 位。在长期存在的数据库中,事务 ID 可以环绕。

命令标识符也是 32 位数量。这在单个事务中创建了 2的32次方(40 亿)条 SQL 命令的硬限制。在实践中,这个限制不是问题——请注意,限制是 SQL 命令的数量,而不是处理的行数。此外,只有实际修改数据库内容的命令才会使用命令标识符。

标签:事务,PostgreSQL,删除,系统,命令,版本,ctid,标识符
来源: https://www.cnblogs.com/shigongp/p/16651549.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有