terça-feira, 24 de novembro de 2009

DICAS DE TUNING : Removendo FTS's Desnecessários

Olá pessoal, como andam as coisas?
Época de festas chegando, projetos congelando, enfim um processo natural e normal para aqueles que trabalham com T.I e não querem ter o desprazer de passar o final de ano plugado ao seu 3G ou conectado remotamente via VPN na sua rede corporativa dando suporte, já passei por isso, péssima idéia..heheheh.


Bem, hoje trago uma dica para as pessoas que curtem TUNING e que buscam muitas vezes melhorar, ou apenas aprender novas ténicas e saber mais sobre algumas "boas práticas" para tal.


Espero que apreciem , um abraço á todos!!!


REMOVENDO FULL-TABLE-SCANS DESNECESSARIOS (FTS)


Não é de hoje que sabemos que excessivos numeros de FTS em nossos Bancos de Dados podem causar algumas dores de cabeça, visto que não trata-se de um comportamento normal do seu DATABASE, ou melhor das querys que nele são executadas.


Uma maneira muito eficiente e muito utilizada por especialistas com quem já trabalhei, inclusiveum deles é bem conhecido é o meu amigo Rodrigo Almeida, é avaliar as quantidade de linhas retornadas por uma query, e identificar se essa tal quantia é realmente uma boa opção para o FTS ter sido gerado.


Baseado em documentações da própria Oracle, afirma-se que uma consulta de retorno de menos de 40% (quarenta por cento) das linhas da tabela em uma tabela ordenada ou 7% (sete por cento) das linhas em uma tabela desordenada, com base no índice de valor de chave descrito por CLUSTERING_FACTOR em DBA_INDEXES, a consulta pode ser ajustado para usar um índice no lugar da tabela de verificação completa.


Porém rapaziada, isso não é assim tão simples quanto parece, e nem tão pouco é uma receita de bolo qualquer, onde se mistura os ingredientes e sempre dara a mesma coisa no final. Para que se chegar nessas considerações devem ser avaliados alguns critérios, quais são eles?


Vejamos:


- Perdas de Indices, especialmente aqueles baseados em funções.
- Estatisticas ruins e ou obsoletas do seu CBO
- Perda dos Histogramas do seu CBO
- Junção de linhas da tabela por indice utilizado.


A maneira mais adotada por todos , afim de eliminar FTS's desnecessários é adicionar mais indices, indices de preferencia baseados em funções.


Tudo que esta sendo dito aqui deve ser levando em consideração também que, houve por parte do DBA e analistas em geral, todo um estudo de caso e uma tomada de decisão com muito zelo e cautela , onde foram examinados I/O's logicos, consistent gets de um indice em contra partida com os custos do full table scan, fatores ligados a MULTIBLOCK READ's e possiveis execuções em paralelo que estejam com FTS's.


Em alguns casos é necessário o uso de HINT's de indice para foçar um uso de um determinado indice, a fim de eliminar um FTS presente.


Bem, é isso, fica aqui essa dica, espero que tenham gostado.


Abraço á todos e até mais ver!!!!