devterview_$ iniciar simulação

Ler um EXPLAIN ANALYZE

DifícilSêniorPerformance

Pergunta

O que você procura primeiro ao ler a saída de `EXPLAIN ANALYZE` de uma query lenta no PostgreSQL?

Resposta esperada

Comparar as linhas ESTIMADAS (`rows=`) com as REAIS (`actual rows=`): uma diferença grande indica estatísticas desatualizadas (rodar `ANALYZE`) e explica planos ruins. Procurar `Seq Scan` em tabela grande onde deveria haver `Index Scan` — falta índice, ou o índice não é usável (função aplicada na coluna, tipo incompatível, `LIKE '%x'`). Olhar o nó mais caro pelo `actual time` acumulado e por loops (`loops=` alto num nó = ele roda N vezes, sinal de nested loop ruim). `Rows Removed by Filter` alto = a query lê muito e joga fora, candidato a índice mais seletivo ou parcial. Buffers (`EXPLAIN (ANALYZE, BUFFERS)`) mostram se está lendo do cache ou do disco. E o total no fim: `Planning Time` vs `Execution Time`.

Por que perguntam isso

Pergunta pleno/sênior de Postgres. Sinais de domínio: 'estimado vs real', `loops=`, `Rows Removed by Filter`, `BUFFERS`.

#explain-analyze#planner#performance
publicidade

Perguntas de acompanhamento

Relacionadas