EXPLAIN (ANALYZE, BUFFERS) ...
é sua ferramenta favorita para aprender sobre os recursos deste DBMS, então novos "chips" úteis de nosso serviço para visualização e análise de planos explain.tensor.ru certamente serão úteis nesta difícil tarefa.
Mas deixe-me lembrá-lo imediatamente de que sem o monitoramento completo e abrangente do banco de dados PostgreSQL, usar apenas a análise de plano é agir da posição do sábio # 5!

[ fonte KDPV , "The Blind and the Elephant" ]
, 1940
, ,
.
,
,
, .
, —
.
,
:
—
!
,
,
, ,
.
,
,
,
.
A contenda surgiu entre os cegos
E durou um ano inteiro.
Então os cegos finalmente
puseram as mãos em movimento.
E como o quinto era forte,
- Ele fechou a boca de todos.
E doravante o elefante consiste em
uma cauda!
Então, hoje no programa:
- mude "divisas" para "alças"
- nós reunimos "mega" planos
- nós mantemos um arquivo pessoal
- estudando a genealogia dos planos
- espiando nas "janelas"
Nem uma única cor!
Historicamente, ao visualizar o plano, marcamos os nós "mais quentes" com uma "divisa" vertical à esquerda do valor - quanto mais alto o valor, mais rica é a cor.

Mas, nesse modelo, a proporção dos valores é mal percebida - por exemplo, um desvio de 30% na diferença de tons só pode ser percebido por um olho treinado. Portanto, fizemos um histograma a partir de "alças" horizontais.

Estatísticas úteis para "mega" planos
Muitas pessoas não percebem a guia "Estatísticas" do plano, aqui está à direita:

E quem percebeu - dificilmente usou ativamente. Decidimos corrigir essa omissão e torná-la realmente útil para a análise de planos "grandes" (mais de 100 nós).
Nós de agrupamento
Todos os nós do plano “idênticos” (ou seja, aqueles com o mesmo tipo de nó, tabela usada e índice) são agrupados em uma linha da tabela. Neste caso, somam-se todos os seus indicadores (tempo de execução, número de registros lidos e descartados, número total de passes e quantidade de dados lidos).
E para maior clareza, cada tipo de nó carrega um rótulo de cor:
- vermelho - leitura de dados
nósSeq Scan
,Index Scan
,CTE Scan
e várias outras... Scan
- amarelas - INFORMÁTICA
nósSort
,Unique
,Aggregate
,Group
,Materialize
, ... - verde - Ligação
nósNested Loop
,Merge Join
,Hash Join
, ...

Classificando por qualquer indicador
Se de repente você precisar de uma análise não pelo tempo total, mas pelo tipo de nó, por exemplo - basta clicar no cabeçalho da coluna - e tudo será:

Dica de ferramenta de contexto de nó
Para entender em detalhes a contribuição de um nó específico em um grupo, passe o mouse sobre o número de qualquer um deles - e você verá a dica tradicional do que exatamente aconteceu lá:

Arquivo pessoal de planos
"Sem cadastro e sem SMS!"Se você usa ativamente nosso serviço, agora será muito mais fácil encontrar seus planos analisados anteriormente - basta mudar para a guia "mina" no arquivo . Os planos caem aqui independentemente da publicação no arquivo geral e são visíveis apenas para você.

Genealogia de planos
Anteriormente, era muito difícil encontrar um plano específico no arquivo, agora é simples. Eles podem ser nomeados e agrupados em uma “árvore genealógica” de otimização!
Basta especificar um nome ao adicionar um plano:

... ou em um plano existente, você pode defini-lo, editar ou adicionar um plano vinculado:

Em seguida, você pode alternar rapidamente pela árvore de opções para avaliar o efeito de certas otimizações:

E se um link para um plano específico repentinamente perdido, ele pode ser facilmente identificado por seu nome em seu arquivo pessoal:

Nós olhamos para as "janelas"
Um pequeno, mas útil, aprimoramento do Query Profiler , sobre o qual escrevi anteriormente - nós o ensinamos a "olhar para as janelas" e mapear corretamente os nós do plano:
-> WindowAgg ==> WINDOW / OVER
-> Sort ==> PARTITION BY / ORDER BY
... como várias definições independentes de "janela" (
WINDOW
) dentro de uma solicitação:

... e classificação em funções de janela sem uma definição explícita:

Boa caça para várias ineficiências!