PostgreSQL数据库的物理存储结构主要是指硬盘上存储的文件,包括:数据文件、日志文件、参数文件、控制文件、WAL预写日志文件等等。下面重点讨论一下PostgreSQL的数据文件。
视频讲解如下:
顾名思义,数据文件用于存储数据,文件名以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对应的目录,如下图所示。