› Fóruns › Banco de dados Oracle › Particionar Tabela › Particionar Tabela
mpvargas,
Como eu trabalho com muito com Data wharehouse, utilizo pra caramba particionamento.
Realmente, a Oracle aconselha particionar tabelas com mais de 2 GB, porem na própria documentação (documento de Partitioning / VLDB), fala-se muito sobre tabelas pequenas tirarem proveito do particionamento.
Não existe muito regra, para quando particionar tabelas não tao grandes, mas vai muito do tato com o seu negócio. Exemplo: Se você faz muitas consultas entre intervalos de data, um particionamento por range na data talvez seja ideal.
Lembre-se da queles casos onde o FULL SCAN é mais rápido que o index. Se for um FULL SCAN apenas na partição desejada é melhor ainda, e sem gastar espaço com index.
Sobre o numero de partições por tabela, você pode consultar o capitulo “Logical Database Limits”, que explica tudo e mais um pouco. Me recordo que no 11GR2, o limite de partições por tabela é de 1024K-1.
Sobre os índexes, procuro sempre criá-los locais, sempre que possível. Os ídexes são particionados juntamente com as partições da tabela. A manutenção é muito mais fácil, pois operações de DDL nao inutilizam o index.
Outra vantagem dos indexes locais, é que mesmo que uma consulta não utilize a chave da partição, ela poderá acessar o index utilizando HASH, lendo varias particiões ao mesmo tempo, se este for o caminho menos custoso.
Particionamento por range de data é muito bom, aliado com compressão é melhor ainda!
Você pode pegar as principais querys que rodam nestes objetos e verificar qual a melhor forma de particioná-los. Alem do custo, compare, I/O (buffer gets, fisical reads, sequential read).
pesquise sobre: partition pruning / partition wise-join