Olá pessoal,
Nos últimos dias estive envolvido em um projeto de tuning de um ambiente DW que roda em um Exadata.
Foi um desafio gigante, pois não tinhamos acesso ao ambiente e nem aos dados do cliente.
Apenas recebemos 237 SQLs e precisávamos ajustar a performance dos mesmos.
A ideia inicial foi gerar as tabelas em nosso laboratório para poder testar os SQLs.
Para gerar os dados, utilizei uma rotina que foi criada pelo
Eduardo Claro e pelo
Rodrigo Righetti **Preciso convencer eles a criarem um post sobre a mesma :)
Essa rotina gera dados fictícios baseados nas estatísticas das tabelas, emulando uma distribuição bem parecida dos dados das tabelas reais.
O cliente aceitou enviar as estatísticas das tabelas do ambiente de testes e com isso consegui montar o ambiente e iniciar os testes.
Algumas coisas que observei e gostaria de compartilhar:
1 - A compressão utilizando HCC é realmente impressionante, de 1.7TB para apenas 44GB.
Obviamente que tudo isso pode variar de ambiente para ambiente, pois depende da distribuição dos dados na tabela.
2 - O tempo das queries diminuiu drasticamente utilizando o HCC, em média 10x mais rápido.
3 - O Exadata utiliza Storage Indexes em tabelas com HCC. Eu não havia encontrado nenhuma informação na documentação oficial sobre isso, apenas encontrei uma mensão no livro "
Expert Oracle Exadata":
Tempo da Query utilizando Compression Basic:
37 segundos
Tempo da Query utilizando Compression HCC:
3,6 segundos
E como podemos observar, Storage Indexes foram utilizados na tabela com HCC:
Apesar dos Storage Indexes funcionarem, sua eficiência tem um peso menor, afinal os ganhos com compressao são os que realmente deram um grande aumento de performance.