Índice
Chega um momento em que trabalhamos com bancos de dados que não é mais apenas obter a informação que nos interessa, mas como a obtemos, pois dependendo da construção da consulta será a quantidade de recursos que a nossa consulta consumirá, para isso PostgreSQL nos oferece EXPLIQUE uma ferramenta com a qual vemos como nossa consulta é executada e tudo o que ela representa.EXPLICAR e EXPLICAR ANALISE
Estas duas ferramentas são a base principal na procura dos problemas de desempenho das consultas que realizamos, embora sejam úteis não são novidade visto que foram incluídas em PostgreSQL Desde seus primeiros anos, mas isso não significa que estejam obsoletos ou desatualizados, pelo contrário, amadureceram para se tornar uma ferramenta capaz de produzir os relatórios mais detalhados sobre a execução de consultas, inclusive os resultados lançados pela ferramenta podem ser obtidos. em formatos como XML ou JSON para análise posterior com outras ferramentas.
Em pgAdmin temos disponível a opção de obter um gráfico do resultado de EXPLIQUE para que ao invés de analisar números possamos ver um gráfico e assim detectar mais facilmente os problemas da consulta e as oportunidades de melhoria.
Diferenças entre EXPLAIN e EXPLAIN ANALYZE
Talvez os dois termos sejam usados como se fossem a mesma coisa, mas entre eles temos diferenças, por exemplo EXPLIQUE nos dá uma ideia de como o planejador de consulta pretende executar a consulta, mas não a executa, em vez disso EXPLICAR ANALISE se você o executa e nos dá uma comparação entre o desempenho esperado e o desempenho real obtido na execução. Ao lançar EXPLIQUE através da pgAdmin Podemos escolher entre EXPLAIN e EXPLAIN ANALYZE, o que nos dará o resultado de cada um à medida que os selecionamos
Vamos ver um exemplo de como usar essa ferramenta, para isso vamos usar EXPLICAR ANALISE, vamos ver o seguinte código:
EXPLAIN ANALYZE SELECT left (tract_id, 5) As county_code, SUM (hispanic_or_latino) As tot, SUM (white_alone) As tot_white, SUM (coalescer (hispanic_or_latino, 0) - coalescer (white_alone, 0)) AS non_white FROM census.hisp_popOU código do condado ***** BY código do condado;
É uma consulta muito simples onde somamos os campos, agrupamos e ordenamos de acordo com um dos campos, o que obteremos como resultado da análise de desempenho será o seguinte:
GroupAggregate (custo = 111,29… 151,93 linhas = 1478) (tempo real = 6,099… 10,194 linhas = 14 loops = 1) -> Classificar (custo = 111,29… 114,98 linhas = 1478) (tempo real = 5,897… 6,565 linhas = 1478 loops = 1) Chave de classificação: ("left" ((tract_id) :: text, 5)) Método de classificação: memória quicksort: 136kB -> Seq Scan on hisp_pop (custo = 0,00… 33,48 linhas = 1478) (tempo real = 0,390… 2,693 linhas = 1478 loops = 1) Tempo de execução total: 10.370 ms
Se colocarmos um pouco de esforço na leitura, os resultados vão ficando cada vez mais fáceis de ler, mas se não tivermos muito tempo ou se o resultado for muito extenso podemos sempre ver o gráfico.
Como podemos ver é mais rápido ver os resultados a nível gráfico, o ideal é usar as duas ferramentas e complementar os dois pontos de vista, é a mesma informação só com ângulos diferentes, haverá puristas que só querem trabalhar com o console de comando e isso é bom, mas um profissional de banco de dados completo deve usar todas as ferramentas à sua disposição para melhorar seu trabalho.
Com isso finalizamos o tutorial, com o uso dessas ferramentas já estaremos em condições de detectar as causas que tornam nossas consultas não rápidas ou as oportunidades de melhoria para otimizar nossa consulta.Gostou e ajudou este tutorial?Você pode recompensar o autor pressionando este botão para dar a ele um ponto positivo