PostgreSQL 中文参考文档
🌐 英文原版 官方 ↗

19.9. 运行时统计收集 #

19.9.1. 查询与索引累积统计
19.9.2. 统计信息监控

19.9.1. 查询与索引累积统计 #

这些参数控制服务器范围内的累积统计系统。 启用后,收集到的数据可以通过 pg_stat 和 pg_statio 系列系统视图访问。 更多信息请参见 Chapter 27。

track_activities (boolean) #

启用对每个会话当前正在执行的命令的信息收集, 包括其标识符以及该命令开始执行的时间。 这个参数默认开启。 注意,即便启用后,这些信息也只对超级用户、具有 pg_read_all_stats 角色特权的角色,以及拥有被报告会话的用户可见 (包括属于他们拥有其特权的角色的会话), 因此它不应当构成安全风险。 只有超级用户和具有相应 SET 权限的用户可以更改这个设置。

track_activity_query_size (integer) #

为 pg_stat_activity.query 字段指定为每个活动会话保留多少内存来存储当前正在执行的命令的 文本。 如果这个值没有指定单位,则以字节为单位。 默认值为 1024 字节。 这个参数只能在服务器启动时设置。

track_counts (boolean) #

启用对数据库活动的统计收集。 这个参数默认开启,因为自动清理守护进程需要收集到的信息。 只有超级用户和具有相应 SET 权限的用户可以更改这个设置。

track_cost_delay_timing (boolean) #

启用基于代价的清理延迟的计时 (参见 Section 19.10.2)。 这个参数默认关闭,因为它会反复向操作系统查询当前时间, 在某些平台上可能造成显著的开销。 你可以使用 pg_test_timing 工具来测量你系统上的计时开销。 基于代价的清理延迟计时信息会显示在 pg_stat_progress_vacuum、 pg_stat_progress_analyze、 使用 VERBOSE 选项时的 VACUUM 和 ANALYZE 输出中, 以及在设置了 log_autovacuum_min_duration 时由自动清理为自动清理和自动分析显示。 只有超级用户和具有相应 SET 权限的用户可以更改这个设置。

track_io_timing (boolean) #

启用对数据库 I/O 等待的计时。 这个参数默认关闭,因为它会反复向操作系统查询当前时间, 在某些平台上可能造成显著的开销。 你可以使用 pg_test_timing 工具来测量你系统上的计时开销。 I/O 计时信息显示在 pg_stat_database、 pg_stat_io (当 object 不是 wal 时)、 pg_stat_get_backend_io() 函数的输出中(当 object 不是 wal 时)、 使用 BUFFERS 选项时的 EXPLAIN 输出中、 使用 VERBOSE 选项时的 VACUUM 输出中、 自动清理为自动清理和自动分析输出的信息中 (当设置了 log_autovacuum_min_duration 时), 以及 pg_stat_statements 中。 只有超级用户和具有相应 SET 权限的用户可以更改这个设置。

track_wal_io_timing (boolean) #

启用对 WAL I/O 等待的计时。这个参数默认关闭, 因为它会反复向操作系统查询当前时间, 在某些平台上可能造成显著的开销。 你可以使用 pg_test_timing 工具来测量你系统上的计时开销。 I/O 计时信息显示在 pg_stat_io 中(object 为 wal 时),以及在 pg_stat_get_backend_io() 函数的输出中(object 为 wal 时)。 只有超级用户和具有相应 SET 权限的用户可以更改这个设置。

track_functions (enum) #

启用对函数调用次数和所用时间的跟踪。 指定 pl 只跟踪过程语言函数,all 还跟踪 SQL 和 C 语言函数。 默认值为 none, 它禁用函数统计跟踪。 只有超级用户和具有相应 SET 权限的用户可以更改这个设置。

Note

对于简单到可以被“内联”进调用查询的 SQL 语言函数,无论这个设置如何都不会被跟踪。

stats_fetch_consistency (enum) #

决定在一个事务内多次访问累积统计时的行为。 设置为 none 时,每次访问都从共享内存 重新获取计数器。 设置为 cache 时, 对某个对象统计的首次访问会缓存这些统计直到事务结束, 除非调用了 pg_stat_clear_snapshot()。 设置为 snapshot 时, 首次统计访问会缓存当前数据库中可访问的所有统计直到事务结束, 除非调用了 pg_stat_clear_snapshot()。 在事务中更改这个参数会丢弃统计快照。 默认值为 cache。

Note

none 最适合监控系统。如果值只被访问一次, 它是最有效的。 cache 保证重复访问得到相同的值,这对涉及例如自连接的查询很重要。 snapshot 在交互式检查统计时可能有用,但开销更高, 尤其是当存在许多数据库对象时。

19.9.2. 统计信息监控 #

compute_query_id (enum) #

启用核心内的查询标识符计算。 查询标识符可以显示在 pg_stat_activity 视图中、通过 EXPLAIN 显示, 或者如果通过 log_line_prefix 参数配置了,还可以在日志中输出。 pg_stat_statements 扩展也要求计算查询标识符。 注意,如果核心内的查询标识符计算方法不可接受, 也可以改用外部模块。在这种情况下, 必须始终禁用核心内的计算。 有效值是 off(始终禁用)、 on(始终启用)、 auto(允许 pg_stat_statements 之类的模块自动启用它),以及 regress (它与 auto 效果相同,只是查询标识符不会显示在 EXPLAIN 输出中, 以便于自动回归测试)。 默认值为 auto。

Note

为了确保只计算和显示一个查询标识符, 计算查询标识符的扩展应当在查询标识符已经被计算过的情况下 抛出错误。

log_statement_stats (boolean)
log_parser_stats (boolean)
log_planner_stats (boolean)
log_executor_stats (boolean) #

为每个查询把相应模块的性能统计输出到服务器日志。 这是一种粗略的性能分析手段,类似于 Unix 的 getrusage() 操作系统设施。 log_statement_stats 报告总的语句统计,其他几个报告每个模块的统计。 log_statement_stats 不能与任何按模块的选项一起启用。 所有这些选项默认都是禁用的。 只有超级用户和具有相应 SET 权限的用户可以更改这些设置。