Monitorar com pg_stat_statements
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:
- 
Conecte-se ao seu banco de dados usando o editor SQL ou um cliente Postgres. 
- 
execute o seguinte comando SQL para criar a extensão: SQLCREATE EXTENSION IF NOT EXISTS pg_stat_statements;
- 
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.
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:
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:
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:
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:
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:
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:
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:
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 .
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