PostgreSQL 里创建的每一行记录都会获得一个唯一的 OID ,除非在创建表时使用 WITHOUT OIDS 选项。 OID 创建时会自动生成一个 4 字节的整数,所有 OID 在整个 PostgreSQL 中均是唯一的。 然而,它在超过 40 亿时将溢出, OID 此后会出现重复。 PostgreSQL 在它的内部系统表里使用 OID 在表之间建立联系。
在用户的数据表中,最好是使用 SERIAl 来代替 OID 因为 SERIAL 只是保证在单个表中数据是唯一的,这样它溢出的可能性就非常小了, SERIAL8 可用来保存 8 字节的序列号字段。
CTID 用于标识带着数据块(地址)和(块内)偏移的特定的物理行。 CTID 在记录被更改或重载后发生改变。索引入口使用它们指向物理行。
收起