Подключение СУБД типа 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'
    

    Чтобы новые параметры применились, выполните restart наблюдаемой СУБД.

  2. Создать расширение:

    CREATE EXTENSION pgpro_stats;
    
  3. Проверить отсутствие конфликтов в представлениях, выполнить команду:

    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;
    
  4. Создать представление:

    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;
    
  5. Выполнить рестарт агента платформы:

    sudo systemctl restart pmaagent