EXPLAIN com sugestões de índice

9

Existe algum software (preferencialmente de código aberto) que possa analisar um PostgreSQL EXPLAIN e recomendar os índices necessários que acelerariam a consulta?

    
por Adam Matan 09.02.2011 / 16:08

3 respostas

6

Eu literalmente descobri isso há alguns minutos: link . Você cola nos resultados de seu EXPLAIN ANALYZE e mostra onde pode haver problemas (é até codificado por cores).

Da seção de ajuda ...

explain.depesz.com is tool for finding real cause for slow queries. Generally, one would use EXPLAIN ANALYZE query; and read the output. The problem is that not all parts of the output are easily understandable by anybody, and it's not always obvious whether node that executes in 17.3ms is faster or slower than the one that runs in 100ms - given the fact that the first one is executed 7 times. To use the site, simply go to its first page and paste there explain analyze output from your psql. This output could look like this. After uploading you will be directed to page which shows parsed, and nicely (well, at least nice for me :) colorized to put emphasis on important parts. This could look like this. Side note: the url for colorized output is persistent, so you can simply use it to show it to others - for example - for those nice guys on irc channel #postgresql on freenode. This graph uses 4 colours to mark important things: white background - everything is fine yellow background - given node is worrying brown background - given node is more worrying red background - given node is very worrying Which color is used, is choosen based on which mode you will use: "Exclusive", "Inclusive" or "Rows X".

    
por 10.02.2011 / 07:28
1

Não estou ciente de nenhuma ferramenta para o Postgres que faça isso de forma algorítmica e, na minha opinião, o cérebro humano (e muitas vezes um pouco de experimentação em um ambiente de desenvolvimento) é realmente a única ferramenta apropriada aqui. Há muitos fatores envolvidos, incluindo se o planejador de consultas considerará ou não o valor do seu índice - algo que é determinado pela maneira como sua instalação ajustou as configurações do planejador de consulta e o tamanho / estatísticas na tabela envolvida ( s).

A melhor recomendação que posso fazer é fazer um EXPLAIN ANALYZE (o ANALYZE é importante - ele fornecerá a você os horários de consulta e de subplano), veja os resultados você mesmo & atacar o maior número que você vê primeiro. Você provavelmente poderia escrever um analisador para dividir a saída EXPLAIN (especialmente na versão 9.0 com a saída JSON), mas eu não conheço ninguém que tenha lidado com isso ainda (isso é basicamente o que os otimizadores do MS-SQL fazem ...)

    
por 09.02.2011 / 16:46
1

Nada de grau de produção, mas para os curiosos, há / foi um projeto de pesquisa para implementar algo assim. Procure por "Orientador de índice do PostgreSQL".

    
por 09.02.2011 / 22:12