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

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

文档 / 配置参数 / 运行时统计数据

CONFIGURATION PARAMETER运行时统计数据 / 累积查询和索引统计

track_functions

收集函数调用次数与耗时统计。

Collects function-level statistics on database activity.

枚举 会话(超级用户) 引入 9.0(基线) 现存至 20 devel 0 次默认值变更

类型
枚举enum
上下文
会话(超级用户)超级用户可在会话内用 SET 修改
默认值
none
枚举值
none, pl, all
引入版本
9.0(基线)
状态
现存

PostgreSQL 18 手册 官方文档

版本轨迹

相对 PostgreSQL 17 无变化。

默认值变迁

none 9.0 – 20

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

手册说明

PostgreSQL 18 手册 · 19.9 运行时统计数据 本站手册 官方原文

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

启用函数调用次数和时间的跟踪。指定pl以仅跟踪过程语言函数, all以同时跟踪SQL和C语言函数。默认值为none, 即禁用函数统计跟踪。只有超级用户和具有适当SET权限的用户才能更改此设置。

Note

简单到足以被内联到调用查询中的 SQL 语言函数不会被跟踪, 而不管这个设置。

机制详解

track_functions 在 pl 模式统计过程语言函数调用与耗时,在 all 模式还包括 SQL/C 函数;none 关闭函数级累计统计。

被规划器内联的简单 SQL 函数会并入调用者,无论本值如何都不会单独统计。嵌套函数时间按统计系统的 total/self 规则报告。

all 扩大插桩范围,在函数密集负载上可能增加开销;计数为累计值,通过 pg_stat_user_functions 等视图观察。其 superuser 上下文允许获授权会话修改,无需重启服务器。

调优建议

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

  • OLTP在线事务处理

    除非函数级调用次数与耗时能回答明确生产问题,否则保持 none。用 pl 把插桩限制到过程语言;只有在函数密集流量上测过开销后才用 all。

  • OLAP分析与批处理

    需要把函数内部时间与调用者时间分开时,可在限时分析中启用 pl 或 all。简单 SQL 函数可能被内联而不可见,因此视图中没有记录不能证明未执行。

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

    优先 none 或短时局部诊断。该枚举控制插桩范围,不是数值采样率;CPU 受限主机上 all 的开销可能占比很高。

常见问题

  • 期待被内联的 SQL 语言函数出现在函数统计中。
  • 没有测量函数密集负载的插桩开销就全局启用 all。
  • 读取累计 total/self 时间时忽略嵌套调用与统计快照行为。
  • 把 none、pl、all 当作采样等级,而不是不同插桩范围。

演化历史

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

  1. PostgreSQL 20 ← 19 沿用 19

    事实沿用 19

  2. PostgreSQL 15 ← 14 仅描述更新

    分类 Statistics / Query and Index Statistics Collector Statistics / Cumulative Query and Index Statistics

逐版本快照

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

版本 默认值单位上下文类型最小值最大值枚举值
9.0 none 会话(超级用户) 枚举 none, pl, all
9.1 none 会话(超级用户) 枚举 none, pl, all
9.2 none 会话(超级用户) 枚举 none, pl, all
9.3 none 会话(超级用户) 枚举 none, pl, all
9.4 none 会话(超级用户) 枚举 none, pl, all
9.5 none 会话(超级用户) 枚举 none, pl, all
9.6 none 会话(超级用户) 枚举 none, pl, all
10 none 会话(超级用户) 枚举 none, pl, all
11 none 会话(超级用户) 枚举 none, pl, all
12 none 会话(超级用户) 枚举 none, pl, all
13 none 会话(超级用户) 枚举 none, pl, all
14 none 会话(超级用户) 枚举 none, pl, all
15 none 会话(超级用户) 枚举 none, pl, all
16 none 会话(超级用户) 枚举 none, pl, all
17 none 会话(超级用户) 枚举 none, pl, all
18 none 会话(超级用户) 枚举 none, pl, all
19 none 会话(超级用户) 枚举 none, pl, all
20 沿用 none 会话(超级用户) 枚举 none, pl, all

参考资料

同类参数

参数 类型 上下文 默认值 版本变动 最近变更
Statistics 运行时统计数据 8 个
累积查询和索引统计 8
stats_fetch_consistency 枚举 会话 cache
设置读取累计统计信息时的一致性方式。 现存
track_activities 布尔 会话(超级用户) on
收集会话当前执行命令的信息。 现存
track_activity_query_size 整数 重启生效 1 KiB 132 次
设置 pg_stat_activity.query 预留的字节数。 现存
track_cost_delay_timing 布尔 会话(超级用户) off
收集基于成本的 vacuum 延迟计时。 现存
track_counts 布尔 会话(超级用户) on
收集数据库活动累计统计。 现存
track_functions 枚举 会话(超级用户) none
收集函数调用次数与耗时统计。 现存
track_io_timing 布尔 会话(超级用户) off
收集数据库 I/O 等待计时。 现存
track_wal_io_timing 布尔 会话(超级用户) off
收集 WAL I/O 等待计时。 现存