pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
百科 / 存储结构
数据库文件、关系分叉、页、元组、TOAST、空闲空间映射与可见性映射。
当前查看 PostgreSQL 18.6。
共 35 个条目,PostgreSQL 18.6 收录 35 个。
包含 PostgreSQL 大版本号的文件
包含各数据库子目录的目录
记录日志收集器当前正在写入的日志文件的文件
包含集群级表(如 pg_database)的子目录
包含事务提交时间戳数据的子目录
包含动态共享内存子系统所用文件的子目录
包含逻辑解码状态数据的子目录
包含多事务状态数据的子目录,用于共享行锁
包含 LISTEN/NOTIFY 状态数据的子目录
包含复制槽数据的子目录
包含已提交的可串行化事务信息的子目录
包含已导出快照的子目录
包含统计子系统持久文件的子目录
包含统计子系统临时文件的子目录
包含子事务状态数据的子目录
包含指向表空间的符号链接的子目录
包含预备事务状态文件的子目录
包含 WAL(预写式日志)文件的子目录
包含事务提交状态数据的子目录
存储由 ALTER SYSTEM 设置的配置参数的文件
记录服务器上次启动所用命令行选项的文件
锁文件,记录当前 postmaster 的进程 ID(PID)、集群数据目录路径、postmaster 启动时间戳、端口号、Unix 域套接字目录路径(可能为空)、第一个有效的 listen_address(IP 地址或 *;未监听 TCP 时为空)以及共享内存段 ID。服务器关闭后此文件不存在。
每个表和索引都存储在单独的文件中。对于普通关系,这些文件以表或索引的 文件节点 编号命名,该编号可在 pg_class . relfilenode 中找到。但对于临时关系,文件名的形式为 t BBB _ FFF ,其中 BBB 是创建该文件的后端进程号, FFF 是文件节点编号。无论哪种情况,除了主文件(也称主分支)之外,每个表和索引还有一个 空闲空间映射 (见 第 66.3 节 ),用于存储该关系可用空闲空间的信息。空闲空间映射存放在以文件节点编号加上 _fsm 后缀命名的文件中。表还拥有 …
每个表和索引都存储在单独的文件中。对于普通关系,这些文件以表或索引的 文件节点 编号命名,该编号可在 pg_class . relfilenode 中找到。但对于临时关系,文件名的形式为 t BBB _ FFF ,其中 BBB 是创建该文件的后端进程号, FFF 是文件节点编号。无论哪种情况,除了主文件(也称主分支)之外,每个表和索引还有一个 空闲空间映射 (见 第 66.3 节 ),用于存储该关系可用空闲空间的信息。空闲空间映射存放在以文件节点编号加上 _fsm 后缀命名的文件中。表还拥有 …
每个表和索引都存储在单独的文件中。对于普通关系,这些文件以表或索引的 文件节点 编号命名,该编号可在 pg_class . relfilenode 中找到。但对于临时关系,文件名的形式为 t BBB _ FFF ,其中 BBB 是创建该文件的后端进程号, FFF 是文件节点编号。无论哪种情况,除了主文件(也称主分支)之外,每个表和索引还有一个 空闲空间映射 (见 第 66.3 节 ),用于存储该关系可用空闲空间的信息。空闲空间映射存放在以文件节点编号加上 _fsm 后缀命名的文件中。表还拥有 …
每个表和索引都存储在单独的文件中。对于普通关系,这些文件以表或索引的 文件节点 编号命名,该编号可在 pg_class . relfilenode 中找到。但对于临时关系,文件名的形式为 t BBB _ FFF ,其中 BBB 是创建该文件的后端进程号, FFF 是文件节点编号。无论哪种情况,除了主文件(也称主分支)之外,每个表和索引还有一个 空闲空间映射 (见 第 66.3 节 ),用于存储该关系可用空闲空间的信息。空闲空间映射存放在以文件节点编号加上 _fsm 后缀命名的文件中。表还拥有 …
本节从文件与目录层面描述存储格式。
本节概述 PostgreSQL 表和索引内部所使用的页面格式。 [19] 序列和 TOAST 表的格式与普通表相同。
每个堆关系和索引关系(hash 索引除外)都有一个空闲空间映射( FSM ),用于跟踪该关系中的可用空间。它与主关系数据并列存放在一个独立的关系分支中,其名称由该关系的文件节点编号加上 _fsm 后缀构成。例如,如果某关系的文件节点是 12345,那么 FSM 就存储在名为 12345_fsm 的文件中,与主关系文件位于同一目录。
为了支持高并发, PostgreSQL 使用 多版本并发控制 ( MVCC )来存储行。不过, MVCC 对更新查询也有一些缺点。具体来说,更新需要向表中加入新的行版本。这还可能要求为每个被更新的行新增索引条目,而移除旧的行版本及其索引条目可能代价很高。
本节概述超长属性存储技术( TOAST , The Oversized-Attribute Storage Technique)。
物理行首部、空值位图、对齐与列数据。
每个不记录 WAL 的表以及该表上的每个索引,都有一个初始化分支。初始化分支是一个适当类型的空表或空索引。当不记录 WAL 的表因崩溃而必须重置为空时,初始化分支会被复制覆盖到主分支上,而其他分支都会被擦除(它们会在需要时自动重建)。
每个堆关系都有一个可见性映射(VM),用于跟踪哪些页面只包含已知对所有活动事务都可见的元组;它还会跟踪哪些页面只包含已冻结的元组。它与主关系数据并列存放在一个独立的关系分支中,名称由关系的文件节点编号加上 _vm 后缀构成。例如,如果某关系的文件节点是 12345,那么 VM 会存储在名为 12345_vm 的文件中,与主关系文件位于同一目录。请注意,索引没有 VM。
WAL 会自动启用;管理员除了确保满足 WAL 文件的磁盘空间需求,并完成任何必要调优之外,不需要再做其他操作(见 第 28.5 节 )。
已收录首次收录接口或属性变化不再收录
版本方格表示采样构建中的收录情况,不代表实际引入时间。点击方格可查看对应版本的定义和来源。
清单覆盖手册中的物理结构和 PGDATA 路径,不枚举所有内部 C 结构。页大小、对齐与访问方法的布局受构建影响;图示为概念示意。