以下参数控制服务器范围的累积统计系统。启用后,可以通过 pg_stat
和 pg_statio
系统视图系列来访问所收集的数据。有关更多信息,请参阅 第 27 章。
track_activities
(boolean
) #启用对每个会话的当前正在执行命令的信息的收集,以及其标识符和该命令开始执行的时间。此参数默认为开启状态。请注意,即使已启用,只有超级用户、具有 pg_read_all_stats
角色权限的角色以及拥有正在报告的会话的用户(包括属于他们具有权限的角色的会话)才能看到此信息,因此它不应构成安全风险。只有超级用户和具有适当 SET
权限的用户可以更改此设置。
track_activity_query_size
(integer
) #指定为每个活动会话的当前正在执行命令的文本存储而保留的内存量,对于 pg_stat_activity
.query
字段。如果未指定单位,则此值将视为字节。默认值为 1024 字节。此参数只能在服务器启动时设置。
track_counts
(boolean
) #启用对数据库活动的统计信息的收集。此参数默认为开启状态,因为自动清理守护进程需要收集的信息。只有超级用户和具有适当 SET
权限的用户可以更改此设置。
track_io_timing
(boolean
) #启用对数据库 I/O 调用进行计时。此参数默认关闭,因为它将反复查询操作系统以获取当前时间,这可能会在某些平台上导致大量的开销。你可以使用 pg_test_timing 工具来衡量系统上的计时开销。I/O 计时信息显示在 pg_stat_database
、pg_stat_io
中,在使用 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_wal
中。只有超级用户和具有适当 SET
权限的用户才能更改此设置。
track_functions
(enum
) #启用对函数调用计数和已用时间的跟踪。指定 pl
以仅跟踪过程语言函数,all
以还跟踪 SQL 和 C 语言函数。默认值为 none
,这将禁用函数统计数据的跟踪。只有超级用户和具有适当 SET
权限的用户才能更改此设置。
即使进行了此设置,如果 SQL 语言函数足够简单,以致可以“内联”到调用查询中,那么也不会对其进行跟踪。
stats_fetch_consistency
(枚举
) #确定在事务中多次访问累计统计信息时的行为。当设置为 none
时,每次访问都会从共享内存重新获取计数器。当设置为 cache
时,第一次访问对象统计信息会缓存这些统计信息,直到事务结束(除非调用了 pg_stat_clear_snapshot()
)。当设置为 snapshot
时,第一次统计信息访问会缓存当前数据库中可访问的所有统计信息,直到事务结束(除非调用了 pg_stat_clear_snapshot()
)。在事务中更改此参数会弃用统计信息快照。默认值为 cache
。
none
最适合于监控系统。如果值只访问一次,则是对于效率最高的。 cache
可确保重复访问产生相同的值,这对涉及自身联接等查询非常重要。 snapshot
在交互式检查统计信息时可能非常有用,但其开销较大,尤其是在存在许多数据库对象时。
compute_query_id
(枚举
) #启用查询标识符的核心计算。查询标识符可以在 pg_stat_activity
视图中通过 EXPLAIN
显示,或者如果通过 log_line_prefix 参数进行配置,则在日志中发出。 pg_stat_statements 扩展还需要计算查询标识符。请注意,如果核心查询标识符计算方法不可接受,则可以用外部模块代替。在这种情况下,必须始终禁用核心计算。有效值为 off
(始终禁用),on
(始终启用),auto
,它允许 pg_stat_statements 等模块自动启用它,以及 regress
,它与 auto
的作用相同,只是查询标识符不会显示在 EXPLAIN
输出中,以便于自动回归测试。默认值为 auto
。
为了确保只计算和显示一个查询标识符,应该在已经计算出查询标识符后抛出错误,用于计算查询标识符的扩展。
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
权限的用户才能更改这些设置。