美文网首页
4.PostgreSQL目录结构

4.PostgreSQL目录结构

作者: 善良的良 | 来源:发表于2019-05-15 20:06 被阅读0次

    $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目录类似

    相关文章

      网友评论

          本文标题:4.PostgreSQL目录结构

          本文链接:https://www.haomeiwen.com/subject/cnpmaqtx.html