文章目录
- 1. 分配一个新 Object ID (OID)
- 1.1 ShmemVariableCache 中 nextOid
- 1.2 写一个 NEXTOID log record
1. 分配一个新 Object ID (OID)
Postgres内核中分配一个新的 Oid 是由函数 GetNewObjectId() 实现。该函数声明于 transam.h,实现于 varsup.c 源文件。
对于 GetNewObjectId() 函数:
- 函数原型
- Oid GetNewObjectId(void)
- 函数说明
- 分配一个新的对象标识符(OID)
- 对象标识符(OIDs)由整个集群范围的计数器生成。由于其宽度仅为 32 位,计数器最终会发生回绕,因此, 除非采取预防措施确保其唯一性,否则假定它们是唯一的是不明智的。因此,此例程通常不应被直接使用。 唯一应直接调用的应该是 catalog/catalog.c 中的 GetNewOidWithIndex() 和 GetNewRelFileNode() 。
函数源码实现:
Oid
GetNewObjectId(void