OID

本文纠正长久以来我对 OID(Object Identifiers) 的一个错误认知,我一直以为 OID 是全局唯一的,造成这个错误认知的原因之一是,在我刚接触 PostgreSQL 时看的一本书里相关的描述让我产生了这样的错觉。 我不确定其他人看这里的描述会不会跟我有一样的感觉,但即使我知道 create database 的时候会把 template 里的系统表进行拷贝,我的大脑依然自洽地认为 OID 是在每个 database 内全局唯一的,甚至在我看到 PG12 创建表 WITH OIDS 选项被删除 时,我的大脑也以 WITH OIDS 会导致 oid 被耗尽 的缘由把我说服了。 直到前段时间看 PG 文档 8.19. Object Identifier Types ,才让我开始质疑自己长久以来的错误认知: Object identifiers (OIDs) are used internally by PostgreSQL as primary keys for various system tables. The oid type is currently implemented as an unsigned four-byte integer. Therefore, it is not large enough to provide database-wide uniqueness in large databases, or even in large individual tables....

August 2, 2024 · 8 min · 1620 words · pg-x