Перейти к основному содержимому

pg_stat_statements. Статистика выполнения сервером всех операторов SQL

Версия: 1.8.

В исходном дистрибутиве установлено по умолчанию: да.

Связанные компоненты: отсутствуют.

Схема размещения: ext.

Модуль pg_stat_statements позволяет отслеживать статистику выполнения сервером всех операторов SQL.

Расширение установлено со следующими параметрами:

ПараметрЗначение
pg_stat_statements.saveon
pg_stat_statements.tracktop
pg_stat_statements.max5000
pg_stat_statements.track_utilityon

Доработка

Доработка не проводилась.

Ограничения

Ограничения отсутствуют.

Установка

Сведения

Установка расширения может быть произведена в процессе развертывании СУБД Pangolin при использовании настроек по умолчанию (документ «Руководство по установке», раздел «Автоматизированная установка при помощи Ansible-скриптов»).

Включение модуля возможно вручную при наличии прав администратора СУБД:

CREATE EXTENSION IF NOT EXISTS pg_stat_statements SCHEMA ext;

Настройка

Для работы модуля требуется общая память, поэтому модуль должен быть загружен при запуске PostgreSQL.

Необходимо добавить модуль в shared_preload_libraries в файл postgresql.conf.

# postgresql.conf
shared_preload_libraries = 'pg_stat_statements'

Использование модуля

Просмотр статистики запроса

  1. Создайте таблицу

    CREATE TABLE t(n numeric);

    Вывод:

    CREATE TABLE
  2. Выполните запрос (к примеру, запись данных в таблицу):

    SELECT format('INSERT INTO t VALUES (%L)', x)
    FROM generate_series(1,5) AS x \gexec

    Вывод:

    INSERT 0 1
    INSERT 0 1
    INSERT 0 1
    INSERT 0 1
    INSERT 0 1
  3. Выполните запрос на статистику оператора SQL, который выполнялся:

    SELECT *
    FROM pg_stat_statements
    ORDER BY calls DESC LIMIT 1;

    Пример вывода:

    -[ RECORD 1 ]-------+--------------------------
    userid | {userid}
    dbid | {dbid}
    queryid | {queryid}
    query | INSERT INTO t VALUES ($1)
    plans | 0
    total_plan_time | 0
    min_plan_time | 0
    max_plan_time | 0
    mean_plan_time | 0
    stddev_plan_time | 0
    calls | 5
    total_exec_time | 0.21237
    min_exec_time | 0.017385
    max_exec_time | 0.106279
    mean_exec_time | 0.042474
    stddev_exec_time | 0.03365834724997649
    rows | 5
    shared_blks_hit | 4
    shared_blks_read | 0
    shared_blks_dirtied | 1
    shared_blks_written | 1
    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
    wal_records | 5
    wal_fpi | 0
    wal_bytes | 300

Ссылки на документацию разработчика

Дополнительно поставляемый модуль pg_stat_statements: https://www.postgresql.org/docs/15/pgstatstatements.html