Testando tabelas compactadas
Baseado no documento Compressed Tables.
Fiz os testes e, como deveria ser com todos os profissionais, não só os DBAs, fui um pouco além.
Os testes foram realizados tanto na versão 9i quanto na 10g, ainda não tenho uma 11g para testar.
Primeiro de tudo, para que serve compactar tabelas ? O objetivo é bastante claro, diminuição de espaço utilizado. Mas, para todo ganho nós temos alguns contratempos :
- Uma vez compactada uma partição, leituras nessa partição serão relativamente mais lentas, já que será necessário o trabalho de descompactar as informações para serem lidas.
- O ganho em espaço pode chegar a um percentual significativo mediante o tamanho da referida tabela, para tabelas gigantes pode ser uma opção bastante interessante.
Fiz os testes indicados pelo link acima e, claro, obtive os resultados relatados.
Resolvi fazer alguns testes complementares :
- Verifiquei o tamanho das tabelas APÓS os updates, a partição compactada tornou-se maior do que a partição descompactada, indicando que não é inteligente dar manutenção nos dados compactados.
- Compactei a partição que inicialmente encontrava-se descompactada, ela ficou com um tamanho inferior a metade do tamanho original.
- Não consegui descompactar uma partição já compactada.
Conclusão
- Criar tabelas particionadas normais e, tendo-se certeza de que não serão manipuladas (atualizadas), compactá-las quando encerrando o período.
- Ficar ciente de que as consultas realizadas nestas partições terão degradação de performance.
- Uma vez que a partição tenha sido compactada, qualquer manipulação irá ser gravada de forma descompactada, se esta partição for movida para uma tablespace menor, poderá haver falta de espaço.
- Uma partição compactada que só recebe dados (insert) será maior do que uma partição normal que é compactada posteriormente.