Pular para o conteúdo

Fóruns Banco de dados Oracle Particionar Tabela Particionar Tabela

#94466
VitorLeandro
Participante

    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