Pular para o conteúdo principal

Monitorar com pg_stat_statements

info

Beta

O Lakebase Postgres (beta com escalonamento automático) é a próxima versão do Lakebase, disponível apenas para avaliação. Para cargas de trabalho de produção, utilize a versão de pré-visualização pública do Lakebase. Consulte a seção "Como escolher entre as versões" para entender qual versão é a mais adequada para você.

pg_stat_statements é uma extensão do Postgres que fornece uma view estatística detalhada da execução de instruções SQL em seu banco de dados Postgres do Lakebase. Ele rastreia informações como contagens de execuções, tempos de execução total e médio, e muito mais, ajudando você a analisar e otimizar o desempenho de consultas SQL .

Quando usar pg_stat_statements

Use pg_stat_statements quando precisar de:

  • Estatísticas detalhadas de execução de consultas e métricas de desempenho
  • Identificação de consultas lentas ou executadas com frequência
  • Análise de desempenho de consulta e percepções de otimização
  • Análise de carga de trabalho e planejamento de capacidade do banco de dados
  • Integração com ferramentas e painéis de monitoramento personalizados

Habilitar pg_stat_statements

A extensão pg_stat_statements está disponível no Lakebase Postgres. Para habilitá-lo:

  1. Conecte-se ao seu banco de dados usando o editor SQL ou um cliente Postgres.

  2. execute o seguinte comando SQL para criar a extensão:

    SQL
    CREATE EXTENSION IF NOT EXISTS pg_stat_statements;
  3. A extensão começa a coletar estatísticas imediatamente após a sua criação.

Persistência de dados

As estatísticas coletadas pela extensão pg_stat_statements são armazenadas na memória e não são retidas quando o seu compute Lakebase é suspenso ou reiniciado. Por exemplo, se a capacidade computacional do seu compute diminuir devido à inatividade, todas as estatísticas existentes serão perdidas. Novas estatísticas são coletadas assim que seu compute é reiniciado.

Esse comportamento significa que:

  • As estatísticas são redefinidas após reinicializações ou suspensões compute
  • A análise de desempenho de longa duração requer disponibilidade compute consistente
  • Você pode querer exportar estatísticas importantes antes de manutenções ou reinicializações programadas.
nota

Considere executar suas consultas de monitoramento regularmente e armazenar os resultados externamente, caso precise de dados históricos de desempenho ao longo dos eventos do ciclo de vida compute .

Saiba mais: Extensões do Postgres

Estatísticas de execução de consultas

Após habilitar a extensão, você pode consultar as estatísticas de execução usando a view pg_stat_statements . Esta view contém uma linha para cada consulta de banco de dados distinta, exibindo várias estatísticas:

SQL
SELECT * FROM pg_stat_statements LIMIT 10;

A view contém detalhes como:

userId

dbid

id da consulta

query

ligações

16391

16384

-9047282044438606287

SELECIONE * DE usuários;

10

Para obter uma lista completa das colunas e suas descrições, consulte a documentação do PostgreSQL.

perguntas-chave

Utilize estas consultas para analisar o desempenho do seu banco de dados:

Encontre as consultas mais lentas

Esta consulta identifica as consultas com o maior tempo médio de execução, o que pode indicar consultas ineficientes que precisam de otimização:

SQL
SELECT
query,
calls,
total_exec_time,
mean_exec_time,
(total_exec_time / calls) AS avg_time_ms
FROM pg_stat_statements
ORDER BY mean_exec_time DESC
LIMIT 20;

Encontre as consultas executadas com mais frequência

As consultas executadas com maior frequência geralmente são caminhos críticos e candidatas à otimização. Esta consulta inclui taxas de acerto de cache para ajudar a identificar consultas que podem se beneficiar de uma melhor indexação:

SQL
SELECT
query,
calls,
total_exec_time,
rows,
100.0 * shared_blks_hit / nullif(shared_blks_hit + shared_blks_read, 0) AS hit_percent
FROM pg_stat_statements
ORDER BY calls DESC
LIMIT 20;

Encontre as consultas com maior volume de entrada/saída (I/O).

Esta consulta identifica as consultas que executam o maior número de operações de E/S de disco, o que pode afetar o desempenho geral do banco de dados:

SQL
SELECT
query,
calls,
shared_blks_read + shared_blks_written AS total_io,
shared_blks_read,
shared_blks_written
FROM pg_stat_statements
ORDER BY (shared_blks_read + shared_blks_written) DESC
LIMIT 20;

Encontre as consultas que consomem mais tempo

Esta consulta identifica as consultas que consomem a maior parte do tempo total de execução em todas as execuções:

SQL
SELECT
query,
calls,
total_exec_time,
mean_exec_time,
rows
FROM pg_stat_statements
ORDER BY total_exec_time DESC
LIMIT 10;

Encontre consultas que retornem muitas linhas.

Esta consulta identifica consultas que retornam grandes conjuntos de resultados, as quais podem se beneficiar da paginação ou filtragem:

SQL
SELECT
query,
calls,
rows,
(rows / calls) AS avg_rows_per_call
FROM pg_stat_statements
ORDER BY rows DESC
LIMIT 10;

Reset estatísticas

Para redefinir as estatísticas coletadas por pg_stat_statements:

nota

Somente databricks_superuser funções têm o privilégio necessário para executar esta função. A função default criada com um projeto Lakebase e as funções criadas no aplicativo Lakebase recebem a associação à função databricks_superuser .

SQL
SELECT pg_stat_statements_reset();

Esta função limpa todos os dados estatísticos acumulados, como tempos de execução e contagens de instruções SQL, e começa a coletar novos dados. É particularmente útil quando você deseja começar do zero na coleta de estatísticas de desempenho.

recurso

Saiba mais: Documentação do PostgreSQL