[firebase-br] Particionamento de tabelas em Firebird

Eduardo Jedliczka edujed em gmail.com
Qui Abr 25 10:27:45 -03 2013


My 0,02 Cents:

Já tive que realizar um "particionamento" de dados com Firebird, mas o
resultado não ficou EXATAMENTE como esperado.

Melhorou, mas surgiu uma quantidade razoável de acompanhamento e manutenção.

Veja como eu realizei isto:

Criei 6 tabelas com a mesma estrutura, e mesmo nome (exceto pelo
acrescimo de um sufixo com o número da partição).

Como era uma tabela de movimento (crescimento mensal de 1GB), utilizei
o sufixo 1 para os meses de janeiro e julho, 2 para fevereiro e março,
etc. independente de ano. Sempre mantia o exercício corrente + os
últimos 3 anos nesta tabela. No final do ano, o exercício mais antigo
era movido para um "arquivo morto".

Criei uma view "atualizável" (com trigger para as operações DML)
unindo as 6 partições.  Nas tabelas "particionadas" não havia nenhuma
trigger.

Dentro desta trigger, eu testava qual era o mês específico e definia
em qual partição a operação deveria ser feita.

O problema era o update de mês, pois o registro precisava ser movido
de partição.

Por culpa do stress do índice, não é interessante particionar por ano.
particionar por semana ( ou "dia da semana"), ou "código do cliente
Mod Y"  é mais inteligente, pois reduz a quantidade de operações num
único índice.

Abraço,

==========================
Eduardo Jedliczka
Curitiba - Pr
==========================


Em 25 de abril de 2013 10:01, Eurides Baptistella
<eurides.baptistella em gmail.com> escreveu:
>
> Concordo com "quase" tudo o que você citou Gladiston, entretanto, nem só de
> bons índices e hardware vive um BD.
> Quando você tem tabelas com grande volume de dados é inevitável sofrer com
> a profundidade de índices (claro, índices não tão bons quanto deveriam, mas
> são outros méritos).
>
> *--
> Eurides V. Baptistella
> **E-mail:* eurides.baptistella em gmail.com
>
>
> Em 25 de abril de 2013 09:47, Gladiston Santana <gladiston em vidy.com.br>escreveu:
>
> > Na realidade o conceito de particionar tabelas, não é particionar os dados,
> > mas o Índice.
> > Os dados ficam onde eles estão, os índices é que subdividem-se por algum
> > critério, geralmente data.
> > Até onde conheco, os dados só se movem no MSSQL quando o índice é
> > clusterizado, isto é, a ordem dos dados é seu próprio índice, quando a
> > chave do registros os dados movem-se do setor do disco também.
> >
> > Tá muito ruim a performance ? Já estudou se os indices estão adequados e
> > balanceados ? Memória está adequada ?
> > Se sim, não vejo muito o que fazer, o algoritimo de arvore binária que
> > todos os banco de dados usam tornam as buscas mais rápidas
> > independentemente da quantidade de dados e o pórtico que segura tudo isso
> > são os indices com bom balanceamento.
> > Sem olhar para o tamanho da base, se os indices, balanceamento, desenho do
> > DB e o hardware estão OK então o FB conheceu o limite e desse momento em
> > diante você deve apenas otimizar o hardware, talvez mais memória e discos
> > mais rápidos.
> >
> >
> > Gladiston Santana
> > Departamento de TI
> > Grupo Vidy
> > Tel (11) 4787-3122 ramal 228
> > Rod. Régis Bittencourt 3360 - Km 272,5
> > Taboão da Serra - SP - CEP: 06793-000
> > Visite nosso site: www.vidy.com.br
> > Visite também : www.expolabor.com.br
> >
> >
> >
> >
> > Em 24 de abril de 2013 17:53, Eurides Baptistella <
> > eurides.baptistella em gmail.com> escreveu:
> >
> > > Tenho tabelas com GBs de dados, preciso particioná-las a fim de obter
> > > melhor performance. Como vocês trabalham o particionamento de tabelas em
> > > Firebird?
> > >
> > > Em PostgreSQL implementei com auxilio de triggers e herança de tabelas!
> > >
> > > Alguém já teve que particionar uma tabela? como fez ?
> > >
> > > Agradeço a ajuda....
> > >
> > > *--
> > > Eurides V. Baptistella
> > > **E-mail:* eurides.baptistella em gmail.com
> > > ______________________________________________
> > > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > > http://www.firebase.com.br/fb/artigo.php?id=1107
> > > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> > >
> > ______________________________________________
> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> > Para saber como gerenciar/excluir seu cadastro na lista, use:
> > http://www.firebase.com.br/fb/artigo.php?id=1107
> > Para consultar mensagens antigas: http://firebase.com.br/pesquisa
> >
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use: http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa




Mais detalhes sobre a lista de discussão lista