postgresql base目录的作用及规则
最新学讯:近期OCP认证正在报名中,因考试人员较多请尽快报名获取最近考试时间,报名费用请联系在线老师,甲骨文官方认证,报名从速!
我要咨询postgresql base目录的作用及规则
postgresql数据库安装后,在pgdata的目录中会初始化一个base目录,那么base目录的主要用途是什么,有哪些规则?
对于集簇里的每个数据库,在$PGDATA/base里都有一个子目录对应,子目录的名字为该数据库在 pg_database里的。
查看各个数据库的oid命令:select oid, datname from pg_database。
[postgres@localhost base]$ psqlpsql (13.0)Type "help" for help.postgres= select oid, datname from pg_database;oid | datname-------+-----------13446 | postgres1 | template113445 | template0(3 rows)
每一张表的数据(大部分)又是放在$PGDATA/base/{dboid}/{relfilenode} 这个文件里面,relfilenode一般情况下和tboid一致,但有些情况下也会变化,如TRUNCATE、REINDEX、CLUSTER以及某些形式的ALTER TABLE。
查询relowner命令
select oid,rolname from pg_authid where rolname='postgres';
查询pg_class命令
select relname,relowner,relfilenode from pg_class;
以test表为例,使用命令:select pg_relation_filepath('test');查看test表文件存储位置,也能看出对应的路径关系。
postgres=# select pg_relation_filepath('test');pg_relation_filepath----------------------base/13446/16384(1 row)
在$PGDATA/base/{dboid}中通常会包含三种文件:例如16384、16384_fsm、16384_vm,分别是该数据库对应表的数据或索引文件、其对应的空闲空间映射文件、其对应的可见性映射文件。
在表或者索引超过1GB之后,它就被划分成1GB大小的段。 第一个段的文件名和文件节点相同,随后的段被命名为 filenode.1、filenode.2等等。这样的安排避免了在某些有文件大小限制的平台上的问题。