PG中的oid和relfilenode之间的关系

PG中的oid和relfilenode之间的关系

PG中的表由一个relfilenode值,即磁盘上表的文件名(除了外表和分区表)。通常情况下可以在Pg_class表找到这个值,然而也会查考一些表的relfilenode为0.本文介绍这些表relfilenode的内部处理流程。

普通表的relfilenode

PG中创建一个表后,会在系统被pg_class存储它的relfilenode值。下面例子,表创建后,OID和relfilenode都时16808。还可以在磁盘上看到16808文件。

postgres=# create table t2(i int);

CREATE TABLE

postgres=# select oid,relname,relfilenode frompg_class where relname = 't2';

 oid  | relname | relfilenode

-------+---------+-------------

 16808 |t2      |       16808

(1 row)

postgres=# \q

movead@movead-PC:/h2/pgpgpg/bin$ ll../data/base/12835/16808

-rw-------+ 1 movead movead 0 12月 31 17:11../data/base/12835/16808

movead@movead-PC:/h2/pgpgpg/bin$

执行truncate、vacuum full等操作后,表数据被重写,并且表文件的relfilenode也会改变。下面测试显示了t

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 博客之星2020 设计师:CY__ 返回首页
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值