[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