跳转到内容

PostgreSQL/架构目录

来自维基教科书,开放世界中的开放书籍

PostgreSQL 在文件系统中组织持久数据以及关于事务或复制操作的易失性状态信息。每个集群在文件系统中都有其根目录。在许多情况下,环境变量 PGDATA 指向此目录。以下图形使用 data 作为集群根目录的名称,这是默认名称。



集群的根目录包含许多子目录和一些文件,所有这些文件都是存储持久信息以及临时信息所必需的。根的名称可以根据需要选择,但其子目录和文件的名字是固定的,分别由 PostgreSQL 决定。以下段落描述了最重要的子目录和文件。

base 包含每个数据库的一个子目录。这些子目录的名称由数字组成。这些是内部对象标识符 (OID),是用于标识其在系统目录中定义的数字。

base 的数据库特定子目录内,有许多文件:每个堆和索引有一个或多个文件。同样,文件名由数字组成。这些文件伴随着用于自由空间图 (后缀为 _fsm) 和可见性图 (后缀为 _vm) 的文件,这些文件包含优化信息。文件名的示例是:30833083_fsm3083_vm

另一个子目录是 global。它包含有关 SQL 对象的信息文件,这些对象不限于某个特定模式,但在模式级别是已知且相关的。

pg_tblspc 中,有一些符号链接指向根目录树之外的目录,例如在不同的磁盘上。非默认表空间的堆和索引文件驻留在那里。在默认表空间中定义的那些文件驻留在数据库特定的子目录中。

子目录 pg_wal 包含 WAL 文件。它们随着集群中的数据更改而出现和增长,并且只要需要用于恢复、归档或复制,它们就会保留。

子目录 pg_xact 包含有关每个事务状态的信息:进行中、已提交、已中止或已子提交。

在根目录中,有一些文件。在许多情况下,集群的配置文件存储在这里。此外,如果实例正在运行,则文件 postmaster.pid 存在于这里(默认情况下,但其他位置也是可能的)。它包含启动实例并控制它的 Postmaster 进程的进程 ID (pid)。


华夏公益教科书