Подключение СУБД типа PostgresPro, использующей расширение pgpro_stats [*]

СУБД типа PostgresPro могут использовать pg_stat_statements или pgpro_stats для сбора статистики запросов.

Если вы используете расширение pg_stat_statements, то эта инструкция для вас неактуальна.

Важно

Если у вас версия PostgresPro Standard, скачайте и установите расширение pgpro-stats-std соответствующей версии из репозитория PostgresPro.

Если у вас PostgresPro Enterprise, расширение уже содержится в дистрибутиве.

  1. Отредактируйте postgresql.conf:

    shared_preload_libraries = 'pgpro_stats'
    pgpro_stats.track_planning = on
    pgpro_stats.plan_format = 'json'
    
  2. Выполните restart наблюдаемой СУБД, чтобы применить новые параметры.

  3. Создайте расширение:

    CREATE EXTENSION pgpro_stats;
    
  4. Проверьте, что в представлении нет конфликтов. Для этого выполните команду:

    select pgpro_stats_create_pg_stat_statements_compatible_views();
    

    Предупреждение

    Уберите лишние представления, если после выполнения команды вы получаете сообщение:

    Please drop extension pg_stat_statements and remove it from
    the shared_preload_libraries.
    If the above is already done and the emulated pg_stat_statements
    and/or  pg_stat_statements_info views have been previousely created
    use: "drop view pg_stat_statements;" and "drop view
    pg_stat_statements_info;"commands.
    

    Чтобы убрать представления, выполните следующие команды:

    drop view pg_stat_statements;
    drop view pg_stat_statements_info;
    
  5. Создайте представление:

    CREATE OR REPLACE VIEW pg_store_plans
    AS
    SELECT userid,
    dbid,
    queryid,
    planid,
    plan,
    plans AS calls,
    total_plan_time::double precision AS total_time,
    rows,
    shared_blks_hit,
    shared_blks_read,
    shared_blks_dirtied,
    shared_blks_written,
    local_blks_hit,
    local_blks_read,
    local_blks_dirtied,
    local_blks_written,
    temp_blks_read,
    temp_blks_written,
    blk_read_time,
    blk_write_time,
    temp_blk_read_time,
    temp_blk_write_time,
    '2000-01-01 00:00:00+00'::timestamp with time zone AS first_call,
    now()::timestamp with time zone AS last_call
    FROM pgpro_stats_statements;
    
  6. Выполните рестарт агента платформы:

    sudo systemctl restart pmaagent