400-090-9964


博客 | 论坛

教学文章

postgresql base目录的作用及规则

时间:2020-11-20 来源:

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等等。这样的安排避免了在某些有文件大小限制的平台上的问题。(转)

版权所有@北京神脑资讯技术有限公司(CUUG,中国UNIX用户协会) Copyright 2017 ALL Rights Reserved 京ICP备11008061号 京公网110108006275号

CUUG旗下网站:www.cuug.com.cn www.cuug.com oracle.cuug.com bbs.cuug.com bd.cuug.com

电话:010-59426307 010-59426319 邮政编码:100089

海淀校区:北京市海淀区紫竹院路88号紫竹花园4号楼D座703(CUUG)