1. OID(对象标识符)
- 定义:OID 是 PostgreSQL 中用于唯一标识数据库对象的无符号 4 字节整数。这些对象可以是表、索引、视图、序列、函数等。
- 作用:
- OID 用于在数据库集簇中唯一标识一个数据库对象。
- OID 存储在系统表中,例如 pg_class 表中记录了表、索引等对象的 OID。
- OID 通常从 16384 开始分配,系统表和系统对象会预先分配一部分 OID。
- 查询 OID:
例如:复制
SELECT oid, relname FROM pg_class WHERE relname = 'pg_class';复制
oid | relname复制
-------+---------复制
1259 | pg_class复制
2. relfilenode(文件节点号)
- 定义:relfilenode 是 PostgreSQL 中用于标识数据库对象(如表、索引、序列等)在文件系统上的物理存储文件的编号。
- 作用:
- relfilenode 用于确定数据库对象在磁盘上的存储位置。
- 每个表或索引在磁盘上都有一个对应的文件,文件名即为 relfilenode。
- relfilenode 通常与 OID 一致,但在某些操作(如 VACUUM FULL、TRUNCATE 等)后可能会发生变化。
- 查询 relfilenode:
SELECT oid, relname, relfilenode FROM pg_class WHERE relname = 't1';
oid | relname | relfilenode复制
-----+---------+-------------复制
33125 | tab_1 | 33136复制
3. OID 与 relfilenode 的关系
- 默认情况下:OID 和 relfilenode 的值是相同的。
- 特殊情况:在某些操作(如 VACUUM FULL、TRUNCATE 等)后,relfilenode 可能会发生变化,而 OID 保持不变。
- 查询文件路径: PostgreSQL 提供了 pg_relation_filepath 函数,可以根据 OID 或表名查询表的物理存储路径:
SELECT pg_relation_filepath('t1');复制
pg_relation_filepath复制
---------------------复制
base/16384/33136复制
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。