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对应的目录,如下图所示。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。