金仓数据库什么是oid和ctid

栏目归类:人大金仓数据库
发布时间:2024-03-26 18:54:43

1 什么是oid

如果使用WITH OIDS创建表,则每一行都包含一个OID伪列,该列将在INSERT期间自动填充。OID被顺序分配4字节整数。最初,它们在整个安装过程中都是唯一的。但是,OID计数器大约为40亿个,此后可能会重复OID。

通过在OID列上创建唯一索引,可以防止单个表中的OID重复(但请注意,WITH OIDS子句本身不会创建此类索引)。系统检查索引以查看是否已经存在新生成的OID,如果存在,则生成新的OID。重复该操作,直至满足唯一约束。因此,如果表内的数据已经很多,整个过程是非常低效的。

要对用户表中的行进行唯一编号,最好使用SERIAL而不是OID列,如果期望该表在其整个生命周期中拥有超过20亿个条目,则最好使用bigserial。

2 什么是ctid

CTID通过表中的块和偏移位置来标识特定的物理行。

索引条目使用它们来指向物理行。

行的CTID在更新时会更改,因此CTID不能用作长期行标识符。

格式(blockid,itemid):拿其中(0,1)来说;0表示块id;1表示在这块第一条记录。

文章来源:https://blog.csdn.net/m0_62472715/article/details/133275677
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
Feichi 技术分享站