当前位置: 首页 > news >正文

【0404】Postgres内核 实现分配一个新的 Object ID (OID)

文章目录

  • 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

http://www.mrgr.cn/news/89962.html

相关文章:

  • LabVIEW位移测量系统
  • LeetCode:496.下一个更大元素
  • 零基础都可以本地部署Deepseek R1
  • 基于机器学习的DDoS检测系统实战
  • SpringAI系列 - 使用LangGPT编写高质量的Prompt
  • Shapefile格式文件解析和显示
  • gitlab多项目流水线
  • C++Primer学习(2.2)
  • 【LeetCode 刷题】贪心算法(4)-区间问题
  • ubuntu20.04+RTX4060Ti大模型环境安装
  • 【机器学习】超参数的选择,以kNN算法为例
  • 学习数据结构(6)单链表OJ上
  • redis之GEO 模块
  • mysql8 从C++源码角度看sql生成抽象语法树
  • 2025年日祭
  • unity学习29:摄像机camera相关skybox 和 Render Texture测试效果
  • 【LeetCode 刷题】贪心算法(2)-进阶
  • 第 26 场 蓝桥入门赛
  • Java中的继承及相关概念
  • .NET Core 8 Blazor 和 Vue 3 技术构建网
  • 微信小程序案例2——天气微信小程序(学会绑定数据)
  • Vite+TS项目中配置路径别名
  • OC-Block
  • 构建Ubuntu unminimized的docker镜像
  • 【前端】打造自己的hexo博客_hexo一本通
  • 使用 SDKMAN! 在 Mac(包括 ARM 架构的 M1/M2 芯片)上安装 Java 8