什么是 OID ?什么是 CTID ?

参与4

1同行回答

努力呀努力呀数据库运维工程师XX
PostgreSQL 里创建的每一行记录都会获得一个唯一的 OID ,除非在创建表时使用 WITHOUT OIDS 选项。 OID 创建时会自动生成一个 4 字节的整数,所有 OID 在整个 PostgreSQL 中均是唯一的。 然而,它在超过 40 亿时将溢出, OID 此后会出现重复。 PostgreSQL 在它的内部系统表里...显示全部

PostgreSQL 里创建的每一行记录都会获得一个唯一的 OID ,除非在创建表时使用 WITHOUT OIDS 选项。 OID 创建时会自动生成一个 4 字节的整数,所有 OID 在整个 PostgreSQL 中均是唯一的。 然而,它在超过 40 亿时将溢出, OID 此后会出现重复。 PostgreSQL 在它的内部系统表里使用 OID 在表之间建立联系。

在用户的数据表中,最好是使用 SERIAl 来代替 OID 因为 SERIAL 只是保证在单个表中数据是唯一的,这样它溢出的可能性就非常小了, SERIAL8 可用来保存 8 字节的序列号字段。

CTID 用于标识带着数据块(地址)和(块内)偏移的特定的物理行。 CTID 在记录被更改或重载后发生改变。索引入口使用它们指向物理行。

收起
银行 · 2020-02-04
浏览2389

提问者

yuansuiyun
数据库架构师LL

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2020-02-03
  • 关注会员:2 人
  • 问题浏览:3113
  • 最近回答:2020-02-04
  • X社区推广