kingbaseES_OID与CTID

本文探讨了OID和CTID在数据库中的工作原理、可能遇到的问题(如重复和不稳定性),并提出了使用SERIAL和bigserial以及避免OID作为长期标识符的优化建议。
摘要由CSDN通过智能技术生成

OID
问题描述:

什么是OID?

分析与解决方法:

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

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

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

CTID
问题描述:

什么是CTID?

分析与解决方法:

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

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值