← PostgreSQL: operação e recuperação
03 / 12 · 40 MIN

Planos, índices e memória

Usa evidência de execução e carga representativa para escolher uma otimização.

Conceito e mecanismo

EXPLAIN mostra o plano estimado; EXPLAIN ANALYZE executa o comando e recolhe medidas reais. Isto também se aplica a comandos que alteram dados. Usa um ambiente controlado para experiências com efeitos e não assumes que ROLLBACK elimina alterações a sequências ou ações externas. Compara linhas estimadas e observadas, operações repetidas e acesso a buffers. Custos do plano não são milissegundos. Estatísticas pouco representativas ou predicados difíceis de estimar podem explicar cardinalidade errada. ANALYZE atualiza informação estatística, mas um índice não é automaticamente a melhor escolha para uma consulta que lê grande parte da tabela.

Aplicação guiada

Num relatório fictício, uma melhoria isolada pode degradar o fecho quando muitos utilizadores correm a mesma consulta. work_mem aplica-se a operações, com vários consumidores por consulta e sessão; operações de hash têm multiplicador próprio. Mede concorrência antes de aumentar limites globalmente. pg_stat_statements ajuda a distinguir impacto acumulado de latência individual, mas não é um histórico completo de parâmetros. CREATE INDEX CONCURRENTLY reduz bloqueio de escritas durante a construção, com custos e restrições próprias. Uma falha pode deixar um índice INVALID que ainda tem overhead. A aceitação da mudança exige estado válido, plano observado e melhoria mensurável, além da existência do objeto.

NA PRÁTICA

Estimativa de 20 linhas e execução de 80000 orientam investigação; não provam que forçar um índice seja a correção.

Armadilhas comuns

ANALYZE como apenas leitura; cost como tempo; work_mem como teto global; índice criado como sucesso.

Tópicos relacionados: Ligações, identidades e privilégios · Transações, bloqueios e retoma · Vacuum, configuração e capacidade

Leva esta ideia contigo

Otimiza a execução e o workload, com critérios verificáveis.

Criar conta

Referência: Execution plans and runtime evidence · PostgreSQL 18 reference semantics;18.6 current stable at review

PostgreSQL® é uma marca registada de PostgreSQL Community Association. A dr.pt é uma plataforma de preparação independente e não está afiliada, associada, patrocinada, autorizada nem aprovada por PostgreSQL Community Association. Os conteúdos e as perguntas são originais, não são perguntas oficiais de exame, e concluir os nossos testes não atribui nem garante qualquer certificação. Os nomes são usados apenas para identificar o tema. Todas as outras marcas pertencem aos respetivos titulares.