twitterfacebookgoogle pluslinkedinrss feedemail

terça-feira, 21 de maio de 2013

Tuning Oracle Exadata - Escolhendo Plano de Execução Errado

O Exadata é uma solução incrível da Oracle, apresentando grande performance no retorno de informações.

O Optimizer da Oracle Exadata tem características específicas, que em alguns casos impedem o mesmo de escolher o melhor plano de execução e utilizar algumas funcionalidades do Exadata que garantem uma melhor performance no retorno da consulta ao banco de dados. Algumas consultas começaram a apresentar problemas de lentidão e com isso foi necessário realizar um tuning de Hint nas consultas, forçando o Optimizer a escolher o recurso “smart scan”, que garante a melhor forma para realizar a busca de dados.
Esta técnica de utilização deste hint especifico, sendo utilizada em qualquer outra versão do banco de dados da Oracle, não sendo o Exadata, não poderia ser nunca utilizada, pois a mesma não faz a utilização de nenhum índice, realizando uma consulta completa na tabela.
Em toda a minha experiência com banco de dados, nunca imaginei que iria solucionar um problema de performance realizando péssimas práticas de consultas.
Duas frases interessantes foram citadas em uma apresentação sobre estes problemas no Exadata, que achei bem interessante:

“Exadata is NOT a magic cure fora bad SQL!”
“However, fixing bad SQL may make Exadata appear to be a magic cure.”
O defeito descrito em alguns sites especializados, definem este problema que ocorre com o Optimizer da Oracle Exadata, como sendo que as novas features do Exadata não são reconhecidas pelo Optimizer da Oracle, que o mesmo não teve alterações significativas para suportar estas novas funcionalidades.

Por exemplo, vemos o exemplo do select abaixo:

Diversos relatórios da Oracle, indicam definir o hint  /*+ full(t) */ para forçar o recurso especial do Exadata e ganhar em performance.

Algumas querys ganharam imensa performance utilizando este Hint. Contudo, logicamente não é recomendado utilizar este Hint em todas as querys, somente para em casos de query que apresentam lentidão.
Também para trabalhar com Exadata é necessário quebrar alguns conceitos, nem todas as consultas realizadas por índices, são necessariamente as mais rápidas, com isso, em alguns casos são necessários deletar ou deixar índices invisíveis.

 

Sobre o Blog

Neste blog irei compartilhar as minhas experiências e observações. Os temas serão variados, mas com ênfase em tecnologia. Inscreva-se nos nossos canais para receber atualizações.