概述
我们一般解压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
如果你觉得这篇文章对你有帮助,请小小打赏一下~