O processo de Tuning de instruções SQL não é uma tarefa fácil, existem ótimas ferramentas para auxiliar nesse trabalho, aquelas que requerem investimento normalmente não estão a nossa disposição nos ambientes onde trabalhamos. Neste artigo vamos listar 9 ferramentas de uso gratuito que podem ser baixadas e utilizadas sem custo,…
Você conhece alguma ferramenta para comparar plano de execução?
Existem situações em que precisamos comparar dois planos de execução para identificar suas diferenças, quando o plano de execução é simples conseguimos realizar essa tarefa inspecionando visualmente os dois planos gerados pelo Otimizador, mas se o plano de execução é mais complexo essa tarefa pode se tornar bem difícil.
Este artigo apresenta um recurso disponível no SQL Developer que permite a comparação de dois planos de execução de maneira muito simples.
Para demonstrar a utilização desse recurso vamos imaginar uma situação hipotética em que um consulta que executava numa base Oracle 9.2 tem seu plano modificado quando executada numa base Oracle 11.2.0.4.
Para essa demonstração vamos utilizar o Oracle SQL Developer 4.1.3.20 e para simular a execução da consulta em bases com versões de Oracle diferentes vamos utilizar o HINT “optimizer_features_enable”.
Plano de execução na base 11.2.0.4
Primeiro vamos conectar numa base Oracle 11.2.0.4 com usuário SH e executar a nossa consulta:
Após a execução da consulta vamos acionar o ícone “Explain Plan” (F10).
Ajudo DBAs e analistas de sistema a se destacarem em suas empresas
e obter um crescimento mais acelerado em suas carreiras, quer saber mais click no link abaixo:
O plano de execução será exibido na parte inferior, logo abaixo da consulta:
Plano de execução simulando base 9.2
Para gerar um plano de execução da mesma consulta como se ela estivesse executando numa base Oracle 9.2 vamos incluir o HINT “optimizer_features_enable(‘9.2.0’)” na consulta e executa-la novamente acionando F10. Será criada um nova aba na janela do plano de execução com o nome “Plano de Explicação”:
Selecione a aba do primeiro plano de execução “V$SQL_PLAN.SQL_ID=d7528wnd7kvfc” e com o botão direito do mouse selecione a opção “Comparar com Plano de Explicação”:
Os dois planos serão exibidos lado a lado em outra aba e as operações diferentes serão coloridas em vermelho:
Observando o dois planos verificamos que as operações coloridas em vermelho são:
1) Operação JOIN: O primeiro plano usa HASH JOIN e o segundo NESTED LOOPS
2) Operação de acesso ao índice: O primeiro plano faz um FAST FULL SCAN enquanto o segundo faz UNIQUE SCAN
Conclusão
Na demonstração acima utilizamos um plano de execução simples para facilitar a explicação desse recurso no SQL Developer, mas este recurso é mais útil quando temos dois planos de execução complexos e precisamos identificar suas diferenças. Verificamos que a operação para comparar dois planos utilizando o SQL Developer é muito simples e o resultado da comparação colocando os dois planos lado a lado e colorindo as operações diferentes em vermelho facilita bastante a identificação das diferenças. Existem outras ferramentas no mercado que realizam esta tarefa, a vantagem do SQL Developer em relação ao seus concorrentes é que sua utilização é livre de encargos financeiros.
Referências
http://www.thatjeffsmith.com/archive/2012/02/quick-tip-comparing-explain-plans-with-sql-developer/