Extended Statistics

O Oracle geralmente não sabe que duas sou mais colunas tem relação entre sí. Um exemplo clássico é país e cidade. Ao especificar as duas colunas no where o Oracle vai multiplicar a seletividade das duas colunas para obter uma estimativa sobre a cardinalidade, errando bastante nessa estimativa. Algo para solucionar esses casos é criar …

Continue lendo Extended Statistics

High-Frequency Automatic Optimizer Statistics Collection

Muitos que trabalham com Oracle sabem que ele tem um auto task para coleta de estatística de forma automática todo dia, geralmente de madrugada. Nesse job, o Oracle irá coletar as estatísticas dos objetos que já mudaram pelo menos 10%(dafault). Mas, e se isso não for o suficiente pro meu ambiente? E se as minhas …

Continue lendo High-Frequency Automatic Optimizer Statistics Collection

SQL Plan Directives

Agora, neste post, iremos ver sobre SQL Plan Directives, o último assunto sobre Adaptive Statistics. Mas, o que é Adaptive Statistics? Adaptive Statistics é controlado pelo parâmetro OPTIMIZER_ADAPTIVE_STATISTICS, não na sua totalidade, e tem o objetivo de melhorar os planos de execução e estimativas quando a query tem predicados muito complexos, ou até mesmo a …

Continue lendo SQL Plan Directives

Statistics Feedback

No post anterior, falei sobre Dynamic Statistics, que é quando o Oracle lê alguns blocos aleatórios do objeto sendo acessado para melhorar as estimativas de cardinalidade em determinada situações. Esse post pode ser lido aqui. Agora irei falar sobre Statistics Feedback, que é quando o Oracle Optimizer monitora as linhas realmente retornadas com a estimativa …

Continue lendo Statistics Feedback

Dynamic Statistics

Dynamic Statistics, ou Dynamic Sampling como era conhecido antes do Oracle 12, é uma técnica do Oracle para ler certos blocos dos objetos para ter uma estimativa da seletividade da tabela, visto que as estatísticas atuais podem ser insuficientes ou até mesmo inexistentes. Visto que a falta de estatísticas ou predicados complexos, pode fazer o …

Continue lendo Dynamic Statistics

Histograms

Já pensou em como o Oracle calcula a estimativa de cardinalidade que uma certa query irá retornar? Bem, vamos testar pra tentar entender. Vamos criar uma tabela e coletar as estatísticas dela: SQL> CREATE TABLE teste_histogram( 2 id NUMBER 3* ); Table TESTE_HISTOGRAM created. SQL> INSERT INTO teste_histogram 2 SELECT level 3 FROM dual 4 …

Continue lendo Histograms

Index Clustering Factor

Já percebeu que algum plano de execução de alguma query sua resolveu não usar o index e partir para o Full Table Scan e você não entende o por que? A resposta pode ser o Index Clustering Factor! Mas, o que é o Index Clustering Factor? Bem, pra entender isso um pouco melhor, vamos ver …

Continue lendo Index Clustering Factor