头图

PostgreSQL数据库的物理存储结构主要是指硬盘上存储的文件,包括:数据文件、日志文件、参数文件、控制文件、WAL预写日志文件等等。下面重点讨论一下PostgreSQL的数据文件。

视频讲解如下:
https://www.bilibili.com/video/BV1gsWSeVEk4/?aid=113011259869...

顾名思义,数据文件用于存储数据,文件名以oid命名。对于超出1G的数据文件,PostgreSQL会自动将其拆分为多个文件来存储,而拆分的文件名将由pg_class中的relfilenode字段来决定。

通过下面的步骤可以确定表所对应的数据文件。

(1)查看数据库的oid。

postgres=# select oid,datname from pg_database;

# 输出的信息如下:  
  oid  |  datname  
-------+-----------
 13580 | postgres
     1 | template1
 13579 | template0
(3 rows)

# 注意:13580是数据库postgres的OID。

(2)查询前面创建的testtable1表的OID。

postgres=# select oid,relname,relkind,relfilenode from pg_class
postgres-# where relname ='testtable1';

# 输出的信息如下:  
  oid  |  relname   | relkind | relfilenode 
-------+------------+---------+-------------
 16395 | testtable1 | r       |       16395
(1 row)

# 注意:16395是表testtable1的OID。

(3)查看表空间mydemotbs对应的目录,如下图所示。
image.png


赵渝强老师
33 声望11 粉丝

20年以上的IT行业从业经历,清华大学计算机软件工程专业毕业,京东大学大数据学院院长,Oracle中国有限公司高级技术顾问;曾在BEA、甲骨文、摩托罗拉等世界500强公司担任高级软件架构师或咨询顾问等要职,精通大...