Подключение СУБД типа 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. Создайте представление:

    • для pgpro_stats версии ниже 1.8:

      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;
      
    • для pgpro_stats версии 1.8:

      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,
      shared_blk_read_time as blk_read_time,
      shared_blk_write_time as 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