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

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

百科 / 配置参数 / 预置选项

CONFIGURATION PARAMETER预置选项

huge_pages_status

报告当前实例中大页的状态:on、off 或 unknown(当通过 postgres -C 查看时)。

Indicates the status of huge pages.

枚举 内部 引入 17 现存至 20 devel 0 次默认值变更

类型
枚举enum
上下文
内部由编译或 initdb 决定,运行时不能修改
默认值
unknown
枚举值
off, on, unknown
分类
预置选项
引入版本
17
状态
现存

PostgreSQL 18.7 手册 官方文档 引入提交 a14354cac0

版本轨迹

相对 PostgreSQL 17 无变化。

默认值变迁

unknown 17 – 19

已记录的默认值在 PostgreSQL 17–19 之间未变。带单位的取值换算成了可读形式,原始的 boot_val 与单位写在悬浮提示里。

手册说明

PostgreSQL 18.7 手册 · 19.15 预置选项 本站手册 官方原文

报告当前实例中大页的状态:on、off 或 unknown(当通过 postgres -C 查看时)。这个参数有助于确定在 huge_pages=try 时分配大页是否成功。更多信息参见 huge_pages。

机制详解

报告主共享内存区是否实际使用显式大页。它是 internal、只读的启动结果,取值为 off、on 或 unknown。

PostgreSQL 应用 huge_pages 后,根据操作系统支持与可用大页池尝试启动分配,再得出该状态;它不由 PostgreSQL 二进制或 initdb 固定。

用 shared_memory_size_in_huge_pages 估算所需池,并在每次重启后把 huge_pages_status 与请求的 huge_pages 策略对照。Transparent Huge Pages 是另一套操作系统机制。

调优建议

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

  • OLTP在线事务处理

    不能直接调该状态。请求 on 却显示 off 时,检查 huge_pages 策略、OS 支持、池大小、权限与启动日志;调整 OS 池后重启。

  • OLAP分析与批处理

    大型共享内存可能需要大量大页;按真实 shared_memory_size 预留余量,并在每个节点验证 NUMA 放置与重启行为。

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

    平台策略无特殊要求时保持 huge_pages=try。不要只为让小共享内存显示 on 就预留过大的 OS 大页池。

常见问题

  • 尝试 SET 一个只读启动结果。
  • 混淆 huge_pages_status 与配置请求 huge_pages。
  • 忽略操作系统大页池过小或启动分配失败。
  • 混淆 PostgreSQL 显式大页与 Transparent Huge Pages。
  • 误以为一个节点的状态适用于 OS 配置不同的故障切换节点。

演化历史

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

  1. PostgreSQL 17 ← 16 新增此参数

    PostgreSQL 17 起可用

逐版本快照

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

版本 默认值单位上下文类型最小值最大值枚举值
17 unknown — 内部 枚举 — — off, on, unknown
18 unknown — 内部 枚举 — — off, on, unknown
19 unknown — 内部 枚举 — — off, on, unknown
20 — — — 枚举 — — —

参考资料

同类参数

参数 类型 上下文 默认值 版本变动 最近变更
Preset Options 预置选项 24 个 ↗
block_size 整数 内部 8192 —
报告一个磁盘块的大小。 现存
data_checksums 布尔 内部 off 201 次
报告这个集簇的数据校验和状态。 现存
data_directory_mode 整数 内部 448 —
在 Unix 系统上,这个参数报告服务器启动时数据目录(由 data_directory 定义)的权限。 现存
debug_assertions 布尔 内部 off 9.51 次
报告 PostgreSQL 是否在构建时启用了断言。 现存
debug_exec_backend 布尔 — —
报告 PostgreSQL 是否在构建时启用了 EXEC_BACKEND。 现存
effective_wal_level 枚举 — —
报告当前系统中实际生效的 WAL 记录级别。 现存
huge_pages_status 枚举 内部 unknown —
报告当前实例中大页的状态:on、off 或 unknown(当通过 postgres -C 查看时)。 现存
in_hot_standby 布尔 内部 off —
报告服务器当前是否处于热备模式。 现存
integer_datetimes 布尔 内部 on —
报告 PostgreSQL 是否在编译时启用了对 64 位整数日期和时间的支持。 现存
lc_collate 字符串 内部 C —
报告对文本数据进行排序所使用的区域设置。 于 16 移除
lc_ctype 字符串 内部 C —
报告决定字符分类的区域设置。 于 16 移除
max_function_args 整数 内部 100 —
报告函数参数的最大数量。 现存
max_identifier_length 整数 内部 63 —
报告标识符的最大长度。 现存
max_index_keys 整数 内部 32 —
报告索引键的最大数目。 现存
num_os_semaphores 整数 内部 0 —
根据配置的最大连接数(max_connections)、允许的自动清理工作进程数(autovacuum_max_workers)、允许的 WAL 发送进程数(max_wal_senders)、允许的后台进程数(max_worker_processes)等,报告服务器所需的信号量数量。 现存
segment_size 整数 内部 1 GiB (131072 × 8kB) —
报告一个文件段中可以存储的块(页)的数量。 现存
server_encoding 字符串 内部 SQL_ASCII —
报告数据库的编码(字符集)。 现存
server_version 字符串 内部 18.6 (Debian 18.6-1.pgdg13+2) 1916 次
报告服务器的版本号。 现存
server_version_num 整数 内部 180006 1916 次
以整数形式报告服务器的版本号。 现存
shared_memory_size 整数 内部 0 B —
报告主共享内存区域的大小,向上取整到整数兆字节。 现存
shared_memory_size_in_huge_pages 整数 内部 -1 —
报告基于指定的 huge_page_size 所需的主共享内存区域的大页数。 现存
ssl_library 字符串 内部 OpenSSL —
报告此 PostgreSQL 服务器在构建时使用的 SSL 库的名称(即使此实例当前未配置或使用 SSL),例如 OpenSSL,如果没有使用 SSL 库,则报告空字符串。 现存
wal_block_size 整数 内部 8192 —
报告一个 WAL 磁盘块的尺寸。 现存
wal_segment_size 整数 内部 16 MiB 111 次
报告 WAL 段文件的大小。 现存