详解PostgreSQL数据目录结构,值得收藏

sw

概述

我们一般解压PG后可以看到有很多个目录,那么这些目录都代表什么意思呢?

1、根目录介绍
data├──baseunderglobal,allthefilenodeishard-code(selectoid,relname,relfilenodefrompg_classwhererelfilenode=0orderbyoid;)├──pg_clogclientauthenticationconfigfile├──pg_├──pg_stat├──pg_stat_tmpversionfile├──pg_xlogstatusinfoofxlogarchive├──├──

可以看到有这么多的根目录,下面对每个目录做一下简单介绍。

2、global目录介绍

global名如其意,存放的文件用于存储全局的系统表信息和全局控制信息。

global下有四种文件:

pg_control

用于存储全局控制信息

pg_

用于将当前目录下系统表的OID与具体文件名进行硬编码映射(每个用户创建的数据库目录下也有同名文件)。

pg_

用于缓存系统表,加快系统表读取速度(每个用户创建的数据库目录下也有同名文件)。

全局系统表文件

数字命名的文件,用于存储系统表的内容。它们在pg_class里的relfilenode都为0,是靠pg_将OID与文件硬编码映射。(注:不是所有的系统表的relfilenode都为0)

结构如下:

data├──globalpg_pltemplate│├──1137pg_tablespace│├──1214pg_shdep_deper_index│├──1233pg_authid│├──1261pg_database│├──2396pg_shdescription_o_c_index│├──2671pg_database_oid_index│├──2676pg_authid_oid_index│├──2694pg_auth_members_member_role_index│├──2697pg_tablespace_spcname_index│├──2846pg_toast_2396_index│├──2964pg_db_role_setting_databaseid_rol_index│├──2966pg_toast_2964_index│├──3592pg_shseclabel_object_index│├──4060pg_toast_3592_index│├──6000pg_replication_origin_roiident_index│├──6002globalcontrolfile,usepgcheck-pctoseeit.│├──pg_,usepgcheck-prtoseeit.

3、base目录介绍

base目录用于存放数据库的所有实体文件。例如,我们创建的第一个库testdb的OID为16384,那么在data/base下就会产生一个名为16384的目录,用于存储testdb的数据文件。

postgres=usetostoredatabasefile(SELECToid,datnameFROMpg_database;)│├──1template0database│├──13858hwbdb,firstuserdatabase││├──3600││├──3600_fsm││├──3600_vm││├──16385││├──pg_││├──pg_││└──PG_VERSION

pg_是pg_class里relfilenode为0的系统表,OID与文件的硬编码映射。

pg_是系统表的cache文件,用于加快读取。默认不存在,查询系统表后自动产生。

PG_VERSION是当前数据库数据格式对应的版本号

其它文件是需要到pg_class里根据OID查到对应的relfilenode来与文件名匹配的。

例如:tab1的relfilenode是16385,那么16385这个文件就是tab1的数据文件

testdb=selectoid,*frompg_tablespace;

每一个Oid都在data/pg_tblspc下对应一个名为Oid的软链接文件,指向真正的space目录。

$tree../data/pg_tblspc/

在space目录是如何组织的呢?

postgres=selectoid,relname,relfilenodefrompg_classwhererelname='t2';oid|relname|relfilenode-------+---------+-------------16444|t2|16444(1row)postgres=#\q[pg@PGbin]$tree../../data/pg_tblspc/16437/../../data/pg_tblspc/16437/└──PG_10_201707211└──13858├──16439└──164442directories,2files

如果你觉得这篇文章对你有帮助,请小小打赏一下~

文章版权声明:除非注明,否则均为藏趣书画城原创文章,转载或复制请以超链接形式并注明出处。

上一个 现实版“古董局中局”:仿古玉被转卖多次当古玉高价卖给大老板,多人被控诈骗罪

下一个 现实版“古董局中局”:仿古玉被转卖多次当古玉高价卖给大老板,多人被控诈骗罪