↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

百科 / 存储结构

存储结构

版本比较

数据库文件、关系分叉、页、元组、TOAST、空闲空间映射与可见性映射。

当前查看 PostgreSQL 18.6。

共 35 个条目,PostgreSQL 18.6 收录 35 个。

  • PG_VERSION PGDATA 路径

    包含 PostgreSQL 大版本号的文件

  • base PGDATA 路径

    包含各数据库子目录的目录

  • current_logfiles PGDATA 路径

    记录日志收集器当前正在写入的日志文件的文件

  • global PGDATA 路径

    包含集群级表(如 pg_database)的子目录

  • pg_commit_ts PGDATA 路径

    包含事务提交时间戳数据的子目录

  • pg_dynshmem PGDATA 路径

    包含动态共享内存子系统所用文件的子目录

  • pg_logical PGDATA 路径

    包含逻辑解码状态数据的子目录

  • pg_multixact PGDATA 路径

    包含多事务状态数据的子目录,用于共享行锁

  • pg_notify PGDATA 路径

    包含 LISTEN/NOTIFY 状态数据的子目录

  • pg_replslot PGDATA 路径

    包含复制槽数据的子目录

  • pg_serial PGDATA 路径

    包含已提交的可串行化事务信息的子目录

  • pg_snapshots PGDATA 路径

    包含已导出快照的子目录

  • pg_stat PGDATA 路径

    包含统计子系统持久文件的子目录

  • pg_stat_tmp PGDATA 路径

    包含统计子系统临时文件的子目录

  • pg_subtrans PGDATA 路径

    包含子事务状态数据的子目录

  • pg_tblspc PGDATA 路径

    包含指向表空间的符号链接的子目录

  • pg_twophase PGDATA 路径

    包含预备事务状态文件的子目录

  • pg_wal PGDATA 路径

    包含 WAL(预写式日志)文件的子目录

  • pg_xact PGDATA 路径

    包含事务提交状态数据的子目录

  • postgresql.auto.conf PGDATA 路径

    存储由 ALTER SYSTEM 设置的配置参数的文件

  • postmaster.opts PGDATA 路径

    记录服务器上次启动所用命令行选项的文件

  • postmaster.pid PGDATA 路径

    锁文件,记录当前 postmaster 的进程 ID(PID)、集群数据目录路径、postmaster 启动时间戳、端口号、Unix 域套接字目录路径(可能为空)、第一个有效的 listen_address(IP 地址或 *;未监听 TCP 时为空)以及共享内存段 ID。服务器关闭后此文件不存在。

  • fsm fork 关系分叉

    每个表和索引都存储在单独的文件中。对于普通关系,这些文件以表或索引的 文件节点 编号命名,该编号可在 pg_class . relfilenode 中找到。但对于临时关系,文件名的形式为 t BBB _ FFF ,其中 BBB 是创建该文件的后端进程号, FFF 是文件节点编号。无论哪种情况,除了主文件(也称主分支)之外,每个表和索引还有一个 空闲空间映射 (见 第 66.3 节 ),用于存储该关系可用空闲空间的信息。空闲空间映射存放在以文件节点编号加上 _fsm 后缀命名的文件中。表还拥有 …

  • init fork 关系分叉

    每个表和索引都存储在单独的文件中。对于普通关系,这些文件以表或索引的 文件节点 编号命名,该编号可在 pg_class . relfilenode 中找到。但对于临时关系,文件名的形式为 t BBB _ FFF ,其中 BBB 是创建该文件的后端进程号, FFF 是文件节点编号。无论哪种情况,除了主文件(也称主分支)之外,每个表和索引还有一个 空闲空间映射 (见 第 66.3 节 ),用于存储该关系可用空闲空间的信息。空闲空间映射存放在以文件节点编号加上 _fsm 后缀命名的文件中。表还拥有 …

  • main fork 关系分叉

    每个表和索引都存储在单独的文件中。对于普通关系,这些文件以表或索引的 文件节点 编号命名,该编号可在 pg_class . relfilenode 中找到。但对于临时关系,文件名的形式为 t BBB _ FFF ,其中 BBB 是创建该文件的后端进程号, FFF 是文件节点编号。无论哪种情况,除了主文件(也称主分支)之外,每个表和索引还有一个 空闲空间映射 (见 第 66.3 节 ),用于存储该关系可用空闲空间的信息。空闲空间映射存放在以文件节点编号加上 _fsm 后缀命名的文件中。表还拥有 …

  • vm fork 关系分叉

    每个表和索引都存储在单独的文件中。对于普通关系,这些文件以表或索引的 文件节点 编号命名,该编号可在 pg_class . relfilenode 中找到。但对于临时关系,文件名的形式为 t BBB _ FFF ,其中 BBB 是创建该文件的后端进程号, FFF 是文件节点编号。无论哪种情况,除了主文件(也称主分支)之外,每个表和索引还有一个 空闲空间映射 (见 第 66.3 节 ),用于存储该关系可用空闲空间的信息。空闲空间映射存放在以文件节点编号加上 _fsm 后缀命名的文件中。表还拥有 …

  • Database File Layout 物理结构

    本节从文件与目录层面描述存储格式。

  • Database Page Layout 物理结构

    本节概述 PostgreSQL 表和索引内部所使用的页面格式。 [19] 序列和 TOAST 表的格式与普通表相同。

  • Free Space Map 物理结构

    每个堆关系和索引关系(hash 索引除外)都有一个空闲空间映射( FSM ),用于跟踪该关系中的可用空间。它与主关系数据并列存放在一个独立的关系分支中,其名称由该关系的文件节点编号加上 _fsm 后缀构成。例如,如果某关系的文件节点是 12345,那么 FSM 就存储在名为 12345_fsm 的文件中,与主关系文件位于同一目录。

  • Heap-Only Tuples ( HOT ) 物理结构

    为了支持高并发, PostgreSQL 使用 多版本并发控制 ( MVCC )来存储行。不过, MVCC 对更新查询也有一些缺点。具体来说,更新需要向表中加入新的行版本。这还可能要求为每个被更新的行新增索引条目,而移除旧的行版本及其索引条目可能代价很高。

  • TOAST 物理结构

    本节概述超长属性存储技术( TOAST , The Oversized-Attribute Storage Technique)。

  • Table row layout 物理结构

    物理行首部、空值位图、对齐与列数据。

  • The Initialization Fork 物理结构

    每个不记录 WAL 的表以及该表上的每个索引,都有一个初始化分支。初始化分支是一个适当类型的空表或空索引。当不记录 WAL 的表因崩溃而必须重置为空时,初始化分支会被复制覆盖到主分支上,而其他分支都会被擦除(它们会在需要时自动重建)。

  • Visibility Map 物理结构

    每个堆关系都有一个可见性映射(VM),用于跟踪哪些页面只包含已知对所有活动事务都可见的元组;它还会跟踪哪些页面只包含已冻结的元组。它与主关系数据并列存放在一个独立的关系分支中,名称由关系的文件节点编号加上 _vm 后缀构成。例如,如果某关系的文件节点是 12345,那么 VM 会存储在名为 12345_vm 的文件中,与主关系文件位于同一目录。请注意,索引没有 VM。

  • WAL Internals 物理结构

    WAL 会自动启用;管理员除了确保满足 WAL 文件的磁盘空间需求,并完成任何必要调优之外,不需要再做其他操作(见 第 28.5 节 )。

已收录首次收录接口或属性变化不再收录

版本方格表示采样构建中的收录情况,不代表实际引入时间。点击方格可查看对应版本的定义和来源。

PostgreSQL 18.6 的变化 · 导出 JSON

阅读说明

清单覆盖手册中的物理结构和 PGDATA 路径,不枚举所有内部 C 结构。页大小、对齐与访问方法的布局受构建影响;图示为概念示意。