$PGDATA
base 目录用于存放数据库的所有实体文件,下属子目录均已数据库oid命名,数据库下面是表和索引
current_logfiles 记录logger当前写入的日志文件
global 全局系统表目录
pg_commit_ts 包含事务提交时间戳的子目录
pg_dynshmem 包含被动态共享内存子系统所使用的文件子目录
pg_hba.conf 客户端认证配置文件,可以配置客户的连接协议、加密方式、ACL等等
pg_ident.conf 用来配置哪些操作系统用户可以映射为数据库用户
pg_logical 逻辑复制的状态数据
pg_multixact 多事务(multi-transaction)状态数据的子目录(用于共享的行锁)
pg_notify LISTEN/NOTIFY状态数据
pg_replslot 复制槽数据
pg_serial 已提交的可序列化事务信息
pg_snapshots 导出的快照
pg_stat 统计信息目录
pg_stat_tmp 临时统计信息目录
pg_subtrans 子事务状态数据
pg_tblspc 指向表空间符号链接
pg_twophase 两阶段提交事务状态
PG_VERSION 当前数据库数据格式对应的版本号
pg_wal wal log目录
pg_xact commit log目录
postgresql.auto.conf alter system命令修改的参数,覆盖postgresql.conf,二进制文件
postgresql.conf pg的配置文件,文本文件
postmaster.opts 记录服务器最后一次启动时使用的命令行参数的文件
postmaster.pid 主进程的操作系统PID,数据库实例正常启动以后就会生成该文件
global
1136 pg_pltemplate
1137 pg_pltemplate_name_index
1213 pg_tablespace
1214 pg_shdepend
数字命名的文件,用于存储系统表的内容,它们在pg_class里的relfilenode都为0,是靠pg_filenode.map将OID与文件硬编码映射
...
pg_control 存储全局控制信息
pg_filenode.map 将当前目录下系统表的OID与具体文件名进行硬编码映射(每个用户创建的数据库目录下也有同名文件)
pg_internal.init 用于缓存系统表,加快系统表读取速度(每个用户创建的数据库目录下也有同名文件)
base
- 存放数据库的所有实体文件
- 子目录均以数据库OID命名
- 数据库子目录下是以对象OID命名的文件
- PG_VERSION 是当前数据库数据格式对应的版本号
- _fsm结尾的文件是数据文件对应的FSM(free space map)文件,用位图方式来标识哪些lock是空闲的
- 以_vm结尾的文件是数据文件对应的VM(visibility map),在做多版本并发控制时是通过在元组头上标识“已无效”来实现删除或更新的,最后通过VACUUM功能来清理无效数据回收空闲空间
表空间目录
可以任意指定,结构与base目录类似
网友评论