CONFIGURATION PARAMETER运行时统计数据 / 统计监控
compute_query_id
启用 PostgreSQL 内核计算查询标识符。
Enables in-core computation of query identifiers.
枚举 会话(超级用户) 引入 14 现存至 20 devel 0 次默认值变更
- 类型
- 枚举enum
- 上下文
- 会话(超级用户)超级用户可在会话内用 SET 修改
- 默认值
auto- 枚举值
auto, regress, on, off- 引入版本
- 14
- 状态
- 现存
版本轨迹
相对 PostgreSQL 17 无变化。
默认值变迁
默认值自 PostgreSQL 14 起没有变过。带单位的取值换算成了可读形式,原始的 boot_val 与单位写在悬浮提示里。
手册说明
启用查询标识符的内核计算。 查询标识符可以在 pg_stat_activity 视图中显示,使用 EXPLAIN,或者如果通过 log_line_prefix 参数进行配置,则可以在日志中发出。 pg_stat_statements 扩展还需要计算查询标识符。 请注意,如果内核查询标识符计算方法不可接受,也可以使用外部模块。 在这种情况下,必须始终禁用内核计算。 有效值为 off(始终禁用), on(始终启用),auto, 允许诸如 pg_stat_statements 这样的模块 自动启用它,并且 regress 具有与 auto 相同的效果,只是查询标识符不会显示在 EXPLAIN 输出中,以便促进自动回归测试。 默认值为 auto。
确认只有一个查询标识符被计算和显示,如果一个查询标识符已经被计算,扩展计算标识符将抛出一个错误。
机制详解
compute_query_id 控制 PostgreSQL 内核生成的规范化查询标识符。该标识可出现在 pg_stat_activity、EXPLAIN 与日志中;除非其他模块负责计算,pg_stat_statements 也需要它。
auto 允许模块请求内核计算,on 始终计算,off 禁止计算,regress 与 auto 相同但为稳定回归输出而不在 EXPLAIN 显示 ID。
只能有一个 provider 计算标识。采用其他算法的扩展必须关闭内核实现并检测冲突,不能静默发布两个不兼容 ID。其 superuser 上下文允许获授权会话修改,无需重启服务器。
调优建议
按典型负载给出的取值思路,不是放之四海皆准的配方:实际取值要看数据量、并发度与硬件。
-
OLTP在线事务处理
pg_stat_statements 等模块应按需请求内核 ID 时使用 auto;没有此类模块但日志、EXPLAIN 或监控仍需要 ID 时才用 on。应在峰值解析/规划速率下测查询规范化开销。
-
OLAP分析与批处理
auto 或 on 可把长分析语句在 pg_stat_activity、EXPLAIN 与日志间关联。主要成本是查询树规范化与哈希,不是时钟读取;超大语句负载应比较规划 CPU。
-
小规格低配实例与开发机
除非外部 query-ID provider 要求 off,否则保留 auto。regress 用于稳定回归输出,不是更小的生产取值;off 会移除 pg_stat_statements 等工具需要的 ID。
常见问题
- 内核 provider 与扩展同时尝试计算不同查询标识。
- 设置 off 后静默丢失 pg_stat_statements、日志或关联工具需要的 ID。
- 把 regress 当作生产优化,而不是测试输出模式。
- 把 query ID 当成跨大版本稳定或具备密码学性质的标识。
演化历史
相邻两个大版本之间的差异,新的在前。版本号链到该版的快照。
-
PostgreSQL 20 ← 19 沿用 19
事实沿用 19
-
PostgreSQL 15 ← 14 仅描述更新
简述
Compute query identifiers.Enables in-core computation of query identifiers. -
PostgreSQL 14 ← 13 新增此参数
PostgreSQL 14 起可用
逐版本快照
每个收录版本里的 7 项事实,与上一个存在的版本不同的格子带底色。版本号链到该版。
| 版本 | 默认值 | 单位 | 上下文 | 类型 | 最小值 | 最大值 | 枚举值 |
|---|---|---|---|---|---|---|---|
| 14 | auto |
— |
会话(超级用户) |
枚举 |
— |
— |
auto, regress, on, off |
| 15 | auto |
— |
会话(超级用户) |
枚举 |
— |
— |
auto, regress, on, off |
| 16 | auto |
— |
会话(超级用户) |
枚举 |
— |
— |
auto, regress, on, off |
| 17 | auto |
— |
会话(超级用户) |
枚举 |
— |
— |
auto, regress, on, off |
| 18 | auto |
— |
会话(超级用户) |
枚举 |
— |
— |
auto, regress, on, off |
| 19 | auto |
— |
会话(超级用户) |
枚举 |
— |
— |
auto, regress, on, off |
| 20 沿用 | auto |
— |
会话(超级用户) |
枚举 |
— |
— |
auto, regress, on, off |
参考资料
同类参数
| 参数 | 类型 | 上下文 | 默认值 | 版本变动 | 最近变更 |
|---|---|---|---|---|---|
| 统计监控 5 | |||||
compute_query_id |
枚举 | 会话(超级用户) | auto |
— | |
| 启用 PostgreSQL 内核计算查询标识符。 | 现存 | ||||
log_executor_stats |
布尔 | 会话(超级用户) | off |
— | |
| 把执行器性能统计写入服务器日志。 | 现存 | ||||
log_parser_stats |
布尔 | 会话(超级用户) | off |
— | |
| 把解析器性能统计写入服务器日志。 | 现存 | ||||
log_planner_stats |
布尔 | 会话(超级用户) | off |
— | |
| 把规划器性能统计写入服务器日志。 | 现存 | ||||
log_statement_stats |
布尔 | 会话(超级用户) | off |
— | |
| 把语句累计性能统计写入服务器日志。 | 现存 | ||||