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表示在这块第一条记录。