[firebase-br] FW: Tamanho do DB
Elton da Motta Barbosa
embarbosa em gmail.com
Qui Maio 27 11:03:03 -03 2010
Não costumo usar o IBOConsole, então não sei sobre ele, mas usando o
gstat você pode obter as informações sobre o preenchimento das páginas
de dados (fill distribution e average fill) com a opção -d (ou sem
opção nenhuma ele mostra estatísticas incluindo a das páginas de
índices).
C:\Arquivos de programas\Firebird\Firebird_2_0\bin>gstat -d
"c:\caminhodobanco\banco.fdb" -user SYSDBA -password masterkey
Sobre o tamanho do arquivo você deve ter visto os artigos no site Firebase
http://www.firebase.com.br/fb/artigo.php?id=2047
http://www.firebase.com.br/fb/artigo.php?id=423
Mas veja bem, digamos que você tenha na A TABELA_A para 113869
records (alocados 1734 páginas x 4096 bytes/pagina)
Se os dados foram inseridos de 5 em 5 minutos (288 registros por dia
na Tabela_A), na tabela TABELA_B teria algo como 396 registros e 13
registros na TABELA_C.
Considerando que você tenha um número "X" (xis) de páginas alocadas,
isso significa certamente que sua taxa de bytes/record vai variar
muito, podendo ser maior nas TABELAS_B e TABELAS_C. Principalmente se
alguma coisa estiver segurando as versões antigas, como você descreve
abaixo.
> Nas procedures que geram os dados para as TABELAS_B e C, anteriormente usava
> o comando DELETE , calculava o novo valor e um INSERT. O tamanho era
> aproximadamente 10M maior que o atual. Imagino que isto ocorra pois os
> records apagados não são removidos da base e ainda não podem ser
> reutilizados pois a transação se mantém ativa até o final da inserção.
> Alterei as procedures para utilizar o UPDATE OR INSERT e consegui esta
> redução para os tamanho citados. Não há outros comandos nas procedures que
> afetem a base de dados, somente SELECTs e cálculos com variáveis locais.
Não tenho certeza sobre o que disse, mas ao finalizar a inserção, você
também finaliza a transação ou faz o commit do tipo CommitRetaining?
Outra coisa que me ocorreu, o que acontece se você fizer um
Backup/Restore? Qual o seu "Sweep interval" (olhe no gstat -h)?
Se possível post aí suas estatísticas do banco de dados do cabeçalho e
das tabelas em questão.
Mais detalhes sobre a lista de discussão lista