pg_stat_statements

用于跟踪 SQL 语句执行统计信息的 contrib 模块

pg_stat_statements 是一个 contrib 模块,它作为 扩展 实现,用于跟踪 SQL 语句的执行统计信息。

pg_stat_statementsPostgreSQL 8.4 中被添加。

变更历史

  • PostgreSQL 19
    • 添加了以下列来跟踪通用和自定义计划调用(提交 3357471c
      • generic_plan_calls
      • custom_plan_calls
  • PostgreSQL 18
    • SET 语句的值现在显示为常量 (提交 dc685159)
    • 添加了以下列来跟踪并行工作进程活动(提交 cf54a2c0
      • parallel_workers_to_launch
      • parallel_workers_launched
    • 添加了 wal_buffers_full 列(提交 ce5bcc4a
  • PostgreSQL 17
    • 保存点名称现在显示为常量(提交 31de7e60
    • 两阶段提交命令的 GID 现在显示为常量(提交 638d42a3
    • DEALLOCATE 语句的名称显示为常量(提交 bb45156f
    • 向视图 pg_stat_statements 添加了 jit_deform_countjit_deform_time 列(提交 5a3423ad
    • CALL 参数现在显示为常量(提交 11c34b34
    • 向视图 pg_stat_statements 添加了 local_blk_read_timelocal_blk_write_time 列(提交 5147ab1d
    • 向视图 pg_stat_statements 添加了 stats_sinceminmax_stats_since 列(提交 dc9f8a79
  • PostgreSQL 16
    • 为实用语句添加了查询打乱(commit 3db72ebc
  • PostgreSQL 15
    • 向视图 pg_stat_statements 添加了 temp_blk_read_timetemp_blk_write_time 列,用于跟踪临时文件块的 I/O 计时(提交 76cbf7ed
    • 添加了以下 JIT 计数器字段(提交 57d6aea0
      • jit_functions
      • jit_generation_time
      • jit_inlining_count
      • jit_inlining_time
      • jit_optimization_count
      • jit_optimization_time
      • jit_emission_count
      • jit_emission_time
  • PostgreSQL 14
  • PostgreSQL 13
    • 配置选项 pg_stat_statements.track_utility 用于跟踪 WAL 使用情况统计信息(提交 6b466bf5
    • 配置选项 pg_stat_statements.track_planning 用于跟踪规划统计信息(提交 17e03282
    • 添加了对规划统计信息跟踪的支持(提交 17e03282
      • 以下 pg_stat_statements 列已重命名
        • total_timetotal_exec_time
        • min_timemin_exec_time
        • max_timemax_exec_time
        • mean_timemean_exec_time
        • stddev_timestddev_exec_time
      • 添加了以下 pg_stat_statements
        • plans
        • total_plan_time
        • min_plan_time
        • max_plan_time
        • mean_plan_time
        • stddev_plan_time
    • 添加了对 WAL 使用统计信息跟踪的支持(提交 6b466bf5
      • pg_stat_statements 视图添加了以下附加列
        • wal_records
        • wal_fpi
        • wal_bytes
  • PostgreSQL 12
    • 现在可以重置特定数据库、用户和查询的统计信息(提交 43cbedab
  • PostgreSQL 11
    • queryid 已扩展到 64 位,以减少冲突的可能性(提交 cff440d3
  • PostgreSQL 10
    • 被忽略的常量显示为“$N”而不是“?”(提交 a6f22e83
  • PostgreSQL 9.5
    • 添加了最小、最大、平均和标准差时间的统计信息(提交 717f7095
  • PostgreSQL 9.4
    • 查询文本存储在文件中(提交 f0d6f202
    • 记录可以返回而不带查询文本(提交 f0d6f202
    • 内部查询哈希标识符已暴露(提交 91484409
    • DEALLOCATE 不再被跟踪(提交 3cd934f6
    • 统计信息文件保存到 pg_stat 目录而不是 global(提交 654e8e44
  • PostgreSQL 9.2
    • SQL 文本标准化(提交 7313cc01
    • 添加了脏缓冲区计数(提交 22543674
    • 添加了 blk_read_timeblk_write_time 列,如果启用了 track_io_timing,这些列将被填充(提交 5b4f3466
  • PostgreSQL 9.1
  • PostgreSQL 9.0
    • 添加了缓冲区访问计数器(提交 8964dbd5
  • PostgreSQL 8.4
    • 添加(提交 7466eeac;请注意,几个后续提交添加了此扩展所需的基础架构)

示例

任意查询的 pg_stat_statements 记录示例

proddb=# SELECT * FROM pg_stat_statements WHERE queryid='2070117699405581796'\gx
-[ RECORD 1 ]-------+-----------------------------------------------------------------------------------------
userid              | 16384
dbid                | 16389
queryid             | 2070117699405581796
query               | /* getCommentsTotal */                                                                  +
                    |     SELECT COUNT(*) AS total                                                            +
                    |       FROM entry c                                                                      +
                    | INNER JOIN object o                                                                     +
                    |         ON o.object_id = c.entry_reference_id                                           +
                    | INNER JOIN object_version ov                                                            +
                    |         ON (ov.object_id = o.object_id AND ov.object_status_id = $1 AND ov.version = $2)+
                    |      WHERE c.entry_status = $3                                                          +
                    |  AND o.site_id IN (SELECT * FROM f_user_get_site_ids($4))
calls               | 4
total_time          | 7556.941424000001
min_time            | 37.801478
max_time            | 5922.666363
mean_time           | 1889.2353560000001
stddev_time         | 2349.3165152342754
rows                | 4
shared_blks_hit     | 204947
shared_blks_read    | 305706
shared_blks_dirtied | 132062
shared_blks_written | 162
local_blks_hit      | 0
local_blks_read     | 0
local_blks_dirtied  | 0
local_blks_written  | 0
temp_blks_read      | 0
temp_blks_written   | 0
blk_read_time       | 0
blk_write_time      | 0

分类

Contrib 模块, 扩展, 日志记录, 监控, 性能, 语句

另请参阅

track_io_timing

反馈

提交有关“pg_stat_statements”的任何评论、建议或更正 请在此处