物理位置
$PGDATA/base/databases_oid
查看数据路径
postgres=# show data_directory ;
data_directory
/usr/local/postgresql/data
(1 row)
base 目录是最重要的一个目录,放的是每一个 database 的数据。base 目录里的每一个数字目录对于一个 database 的 oid, 可以通过 查看 pg_database 这张表查看每一个 数据库的 oid 。
postgres=# select oid,datname from pg_database ;
1 | template1
13292 | template0
13297 | postgres
16384 | test
16415 | pgadmintest
24597 | taobao
(6 rows)
postgres=# select relfilenode from pg_class where relname='subjects';
relfilenode
16405
(1 row)
postgres=#
postgres=# select pg_relation_filepath('subjects');
pg_relation_filepath
base/13297/16405
(1 row)
文件超过 1GB 以后,Postgres 会把这个文件拆分成不超过 1G 的多个文件,文件末尾加上 .1 .2 .3 … 做编号。 如 24589 24589.1 24589.2 。
以关系OID命名的主数据文件,文件名以_fsm结尾的空闲空间映射文件,文件名以_vm结尾的可见性映射文件。