Campaign Classic V7 - O que é o módulo db pg_stat_statement? Para que serve?

Descrição

  1. O que é o módulo do db pg_stat_statements?

  2. Por que é solicitado a habilitar por clientes?

  3. Como é ativado?

Resolução

  1. pg_stat_statements O módulo fornece um meio de rastrear estatísticas de execução de todas as instruções SQL executadas por um servidor.

    O módulo deve ser carregado com a adição pg_stat_statements para shared_preload_libraries em postgresql.conf, pois requer memória compartilhada adicional. Isso significa que é necessário reiniciar o servidor para adicionar ou remover o módulo.

    Link: https://www.postgresql.org/docs/9.4/pgstatstatements.html

  2. Para implementar um schema do tipo view nesta tabela, que permite monitorar consultas que levam muito tempo. Dessa forma, os clientes poderão ajustá-los e otimizar o desempenho.

    Essa extensão fornece métricas para executar consultas: que são as consultas executadas com mais frequência e o tempo que cada uma leva.

  3. pg_stat_statements

    1. Verificar se o PostgreSQL oficial contrib o pacote para a versão de pôsteres está instalado.

      $ dpkg -l | grep postgres
       postgresql-contrib-9.3
      

      Se não estiver instalado, instale-o.

      $ apt-get install postgresql-contrib-9.3
      
    2. Alterar postgresql.conf para pré-carregar o módulo na inicialização

      Padrão: shared_preload_libraries = ''

      Novo: shared_preload_libraries = 'pg_stat_statements'

      Se estiver usando ambos pg_stat_statements e auto_explain, use UM registro e separe-o com vírgulas:

      shared_preload_libraries = 'auto_explain,pg_stat_statements'
      
    3. No banco de dados que deseja monitorar, execute CREATE query:

      Nenhuma criação de extensão necessária para auto_explainsomente para pg_stat_statements

      psql
      postgres=# \c mydatabase
      mydatabase=# CREATE EXTENSION pg_stat_statements;
      
    4. Na seção OPTIONS PERSONALIZADAS de postgresql.conf, adicione as linhas:

      pg_stat_statements.max = 5000
      pg_stat_statements.track = all
      pg_stat_statements.save = on
      
    5. Reiniciar o serviço postgresql

Exemplo: Obtenha as 5 principais consultas mais caras nos bancos de dados

SELECT query, calls, total_time, rows, 100.0\*shared_blks_hit/nullif(shared_blks_hit+shared_blks_read,0) AS hit_percent
 from pg_stat_statements as s inner join pg_database as d on d.oid = s.dbid
 where d.datname = 'Database_Name'
 order by total_time desc limit 5;

Nesta página