4.13. SQL Query and Statement Metrics #

Metrics based on the pg_stat_statements view and collected by the following plugins:

  • the statements_generic plugin:

    • postgresql.statements.calls{database, user, queryid}

    • postgresql.statements.rows{database, user, queryid}

  • the statements_parallel plugin, available from Postgres Pro and PostgreSQL 18:

    • postgresql.statements.parallel_workers_to_launch{database, user, queryid}

    • postgresql.statements.parallel_workers_launched{database, user, queryid}

  • the statements_timing plugin:

    • postgresql.statements.exec_time_milliseconds{database, user, queryid}

    • postgresql.statements.blocks_read_time_milliseconds{database, user, queryid}

    • postgresql.statements.blocks_write_time_milliseconds{database, user, queryid}

    • available from Postgres Pro and PostgreSQL 17:

      • postgresql.statements.local_blocks_read_time_milliseconds{database, user, queryid}

      • postgresql.statements.local_blocks_write_time_milliseconds{database, user, queryid}

  • the statements_planning plugin:

    • postgresql.statements.plans{database, user, queryid}

    • postgresql.statements.plan_time_milliseconds{database, user, queryid}

  • the statements_shared_io plugin:

    • postgresql.statements.shared_blocks_dirtied{database, user, queryid}

    • postgresql.statements.shared_blocks_hit{database, user, queryid}

    • postgresql.statements.shared_blocks_read{database, user, queryid}

    • postgresql.statements.shared_blocks_written{database, user, queryid}

  • the statements_local_io plugin:

    • postgresql.statements.local_blocks_dirtied{database, user, queryid}

    • postgresql.statements.local_blocks_hit{database, user, queryid}

    • postgresql.statements.local_blocks_read{database, user, queryid}

    • postgresql.statements.local_blocks_written{database, user, queryid}

  • the statements_temp_io plugin:

    • postgresql.statements.temp_blocks_read_time_milliseconds{database, user, queryid}

    • postgresql.statements.temp_blocks_read{database, user, queryid}

    • postgresql.statements.temp_blocks_write_time_milliseconds{database, user, queryid}

    • postgresql.statements.temp_blocks_written{database, user, queryid}

  • the statements_wal plugin:

    • postgresql.statements.wal_bytes{database, user, queryid}

    • postgresql.statements.wal_fpi{database, user, queryid}

    • postgresql.statements.wal_records{database, user, queryid}

    • available from Postgres Pro and PostgreSQL 18:

      • postgresql.statements.wal_buffers_full{database, user, queryid}

  • the statements_jit plugin:

    • postgresql.statements.jit_emission_count{database, user, queryid}

    • postgresql.statements.jit_emission_time_milliseconds{database, user, queryid}

    • postgresql.statements.jit_functions{database, user, queryid}

    • postgresql.statements.jit_generation_time_milliseconds{database, user, queryid}

    • postgresql.statements.jit_inlining_count{database, user, queryid}

    • postgresql.statements.jit_inlining_time_milliseconds{database, user, queryid}

    • postgresql.statements.jit_optimization_count{database, user, queryid}

    • postgresql.statements.jit_optimization_time_milliseconds{database, user, queryid}

    • available from Postgres Pro and PostgreSQL 17:

      • postgresql.statements.jit_deform_count{database, user, queryid}

      • postgresql.statements.jit_deform_time_milliseconds{database, user, queryid}

  • the statements_queries plugin:

    • postgresql.statements.query_info{database, user, queryid, query}

Metrics based on the pgpro_stats_statements view, collected by the following plugins:

  • the pgpro_statements_generic plugin:

    • postgresql.pgpro_statements.calls{database, user, queryid}

    • postgresql.pgpro_statements.rows{database, user, queryid}

  • the pgpro_statements_parallel plugin, available from Postgres Pro and PostgreSQL 18:

    • postgresql.pgpro_statements.parallel_workers_to_launch{database, user, queryid}

    • postgresql.pgpro_statements.parallel_workers_launched{database, user, queryid}

  • the pgpro_statements_timing plugin:

    • postgresql.pgpro_statements.exec_time_milliseconds{database, user, queryid}

    • postgresql.pgpro_statements.shared_blocks_read_time_milliseconds{database, user, queryid}

    • postgresql.pgpro_statements.shared_blocks_write_time_milliseconds{database, user, queryid}

    • available from Postgres Pro and PostgreSQL 17:

      • postgresql.pgpro_statements.local_blocks_read_time_milliseconds{database, user, queryid}

      • postgresql.pgpro_statements.local_blocks_write_time_milliseconds{database, user, queryid}

  • the pgpro_statements_planning plugin:

    • postgresql.pgpro_statements.plans{database, user, queryid}

    • postgresql.pgpro_statements.plan_time_milliseconds{database, user, queryid}

  • the pgpro_statements_shared_io plugin:

    • postgresql.pgpro_statements.shared_blocks_hit{database, user, queryid}

    • postgresql.pgpro_statements.shared_blocks_read{database, user, queryid}

    • postgresql.pgpro_statements.shared_blocks_dirtied{database, user, queryid}

    • postgresql.pgpro_statements.shared_blocks_written{database, user, queryid}

  • the pgpro_statements_local_io plugin:

    • postgresql.pgpro_statements.local_blocks_hit{database, user, queryid}

    • postgresql.pgpro_statements.local_blocks_read{database, user, queryid}

    • postgresql.pgpro_statements.local_blocks_dirtied{database, user, queryid}

    • postgresql.pgpro_statements.local_blocks_written{database, user, queryid}

  • the pgpro_statements_temp_io plugin:

    • postgresql.pgpro_statements.temp_blocks_read{database, user, queryid}

    • postgresql.pgpro_statements.temp_blocks_written{database, user, queryid}

    • postgresql.pgpro_statements.temp_blocks_read_time_milliseconds{database, user, queryid}

    • postgresql.pgpro_statements.temp_blocks_write_time_milliseconds{database, user, queryid}

  • the pgpro_statements_wal plugin:

    • postgresql.pgpro_statements.wal_records{database, user, queryid}

    • postgresql.pgpro_statements.wal_fpi{database, user, queryid}

    • postgresql.pgpro_statements.wal_bytes{database, user, queryid}

    • available from Postgres Pro and PostgreSQL 17:

      • postgresql.pgpro_statements.wal_buffers_full{database, user, queryid}

  • the pgpro_statements_jit plugin:

    • postgresql.pgpro_statements.jit_functions{database, user, queryid}

    • postgresql.pgpro_statements.jit_generation_time_milliseconds{database, user, queryid}

    • postgresql.pgpro_statements.jit_inlining_count{database, user, queryid}

    • postgresql.pgpro_statements.jit_inlining_time_milliseconds{database, user, queryid}

    • postgresql.pgpro_statements.jit_optimization_count{database, user, queryid}

    • postgresql.pgpro_statements.jit_optimization_time_milliseconds{database, user, queryid}

    • postgresql.pgpro_statements.jit_emission_count{database, user, queryid}

    • postgresql.pgpro_statements.jit_emission_time_milliseconds{database, user, queryid}

    • available from Postgres Pro and PostgreSQL 17:

      • postgresql.pgpro_statements.jit_deform_count{database, user, queryid}

      • postgresql.pgpro_statements.jit_deform_time_milliseconds{database, user, queryid}

  • the pgpro_statements_queries plugin:

    • postgresql.pgpro_statements.query_info{database, user, queryid, query}

  • the pgpro_statements_wait_stats plugin:

    • postgresql.pgpro_statements.wait_stats_milliseconds_total{database, user, queryid, type, event}

  • the pgpro_statements_rusage plugin:

    • postgresql.pgpro_statements.rusage_reads{database, user, queryid, statement_phase}

    • postgresql.pgpro_statements.rusage_writes{database, user, queryid, statement_phase}

    • postgresql.pgpro_statements.rusage_user_time_milliseconds{database, user, queryid, statement_phase}

    • postgresql.pgpro_statements.rusage_system_time_milliseconds{database, user, queryid, statement_phase}

    • postgresql.pgpro_statements.rusage_minflts{database, user, queryid, statement_phase}

    • postgresql.pgpro_statements.rusage_majflts{database, user, queryid, statement_phase}

    • postgresql.pgpro_statements.rusage_nswaps{database, user, queryid, statement_phase}

    • postgresql.pgpro_statements.rusage_msgsnds{database, user, queryid, statement_phase}

    • postgresql.pgpro_statements.rusage_msgrcvs{database, user, queryid, statement_phase}

    • postgresql.pgpro_statements.rusage_nsignals{database, user, queryid, statement_phase}

    • postgresql.pgpro_statements.rusage_nvcsws{database, user, queryid, statement_phase}

    • postgresql.pgpro_statements.rusage_nivcsws{database, user, queryid, statement_phase}

  • the pgpro_statements_plans plugin:

    • postgresql.pgpro_statements.plan_info{database, user, planid, plan}

  • the pgpro_statements_inval_msgs plugin:

    • postgresql.pgpro_statements.inval_msgs_total{database, user, queryid}

    • postgresql.pgpro_statements.inval_msgs_catcache{database, user, queryid}

    • postgresql.pgpro_statements.inval_msgs_catalog{database, user, queryid}

    • postgresql.pgpro_statements.inval_msgs_relcache{database, user, queryid}

    • postgresql.pgpro_statements.inval_msgs_relcache_all{database, user, queryid}

    • postgresql.pgpro_statements.inval_msgs_smgr{database, user, queryid}

    • postgresql.pgpro_statements.inval_msgs_relmap{database, user, queryid}

    • postgresql.pgpro_statements.inval_msgs_snapshot{database, user, queryid}