选择 打开 改范围 完整检索页

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

文档 / 配置参数 / 资源消耗

CONFIGURATION PARAMETER资源消耗 / 磁盘

file_extend_method

选择扩展数据文件的方法。

Selects the method used for extending data files.

枚举 重载生效 引入 16 现存至 20 devel 0 次默认值变更

类型
枚举enum
上下文
重载生效改配置文件后重载(pg_ctl reload / SIGHUP)即可生效
默认值
posix_fallocate
枚举值
posix_fallocate, write_zeros
引入版本
16
状态
现存

PostgreSQL 18 手册 官方文档 引入提交 e37b598028

版本轨迹

相对 PostgreSQL 17 无变化。

默认值变迁

posix_fallocate 16 – 20

默认值自 PostgreSQL 16 起没有变过。带单位的取值换算成了可读形式,原始的 boot_val 与单位写在悬浮提示里。

手册说明

PostgreSQL 18 手册 · 19.4 资源消耗 本站手册 官方原文

本版译文与 PostgreSQL 16 完全一致,下面就是同一段文字。

指定在诸如COPY这类批量操作期间扩展数据文件时所使用的方法。 默认会根据操作系统选择第一个可用选项:

  • posix_fallocate(Unix)使用标准 POSIX 接口分配磁盘空间,但某些系统缺少该接口。 如果接口存在但底层文件系统不支持,本选项会静默回退到write_zeros。 已知当前版本的 BTRFS 在使用该选项时会禁用压缩。 在提供该函数的系统上,这是默认值。

  • write_zeros通过写出零字节块来扩展文件。 在不提供posix_fallocate函数的系统上,这是默认值。

当数据文件扩展的块数不超过 8 个时,总是使用write_zeros方法。

机制详解

file_extend_method 选择 PostgreSQL 批量扩展关系文件的方法:可用时使用 posix_fallocate,否则显式写零;扩展不超过八个块时仍使用写零。

第一个受支持方法依平台而定。posix_fallocate 可在不逐块写入时预留空间,但文件系统不支持时会静默回退;当前 BTRFS 上它可能关闭该文件的压缩。

它影响空间分配方式与批量写延迟,不改变 WAL 持久性。空间预留、稀疏文件、压缩与写时复制语义都依文件系统而异。其 SIGHUP 上下文允许通过重载配置生效,无需重启服务器。

调优建议

按典型负载给出的取值思路,不是放之四海皆准的配方:实际取值要看数据量、并发度与硬件。

  • OLTP在线事务处理

    除非操作系统支持与受控基准证明需要修改,否则让 file_extend_method 保持探测/默认值;必须在完全相同的内核与文件系统上验证启动和恢复。

  • OLAP分析与批处理

    大分配或批量 I/O 可能放大 file_extend_method 的影响,但平台能力是第一道门槛。应在生产等价存储上测试,并包含失败与回退行为。

  • 小规格低配实例与开发机

    小型或异构机器群上,除非解决已验证的平台问题,否则避免非默认 file_extend_method;可移植性与可靠启动通常比推测收益更重要。

常见问题

  • 修改 file_extend_method 时忽略文档单位与配置生效上下文。
  • 只优化孤立基准,却忽略并发后的资源总量。
  • 认为配置值能够保证操作系统或存储层实际行为。
  • 修改后没有重新验证启动、故障转移与负载延迟。

演化历史

相邻两个大版本之间的差异,新的在前。版本号链到该版的快照。

  1. PostgreSQL 20 ← 19 沿用 19

    事实沿用 19

  2. PostgreSQL 16 ← 15 新增此参数

    PostgreSQL 16 起可用

逐版本快照

每个收录版本里的 7 项事实,与上一个存在的版本不同的格子带底色。版本号链到该版。

版本 默认值单位上下文类型最小值最大值枚举值
16 posix_fallocate 重载生效 枚举 posix_fallocate, write_zeros
17 posix_fallocate 重载生效 枚举 posix_fallocate, write_zeros
18 posix_fallocate 重载生效 枚举 posix_fallocate, write_zeros
19 posix_fallocate 重载生效 枚举 posix_fallocate, write_zeros
20 沿用 posix_fallocate 重载生效 枚举 posix_fallocate, write_zeros

参考资料

同类参数

参数 类型 上下文 默认值 版本变动 最近变更
Resource Usage 资源消耗 4 个
磁盘 4
file_copy_method 枚举 会话 copy
选择数据库文件的复制方法。 现存
file_extend_method 枚举 重载生效 posix_fallocate
选择扩展数据文件的方法。 现存
max_notify_queue_pages 整数 重启生效 1048576
设置 LISTEN/NOTIFY 队列最多分配的页面数。 现存
temp_file_limit 整数 会话(超级用户) -1 kB
限制每个 PostgreSQL 进程使用的全部临时文件总大小。 现存