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

Версия: 1.8.

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

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

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

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

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

Параметр

Значение

pg_stat_statements.save

on

pg_stat_statements.track

top

pg_stat_statements.max

5000

pg_stat_statements.track_utility

on

Доработка#

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

Ограничения#

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

Установка#

Установка расширения может быть произведена в процессе развертывании СУБД 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