[firebase-br] delete com exclusao fisica
Carlos Sato
cansato em ig.com.br
Seg Nov 1 09:48:48 -03 2004
Segundo os manuais do Interbase, existe sim uma outra maneira sem ser pelo
Backup/Restore.
Na verdade o Firebird/Interbase já faz isso de forma automática, através de
sua função de "sweeping" que resolve o problema de transações "em aberto" e
elimina por conseqüencia todo o "lixo" do banco de dados.
Só que essa forma automática ocorre após terem decorridos um determinado
número de transações (padrão = 20000) entre uma "Interesting Transaction" e
outra. Essa "Interesting Transaction" é uma transação que não foi completada
por um Commit ou um Rollback. Quando ocorre a primeira vez esse problema, o
Firebird/Interbase marca essa transação como OIT (Oldest Interesting
Transaction) e ao ocorrer a próxima, verifica se a diferença entre elas é
maior que o intervalo determinado, no padrão 20000 transações. Caso seja, o
servidor inicia o processo de "sweeping". Importante: o banco de dados não
precisa estar em modo exclusivo, os usuários podem estar conectados.
É importante entender que essa diferença pode nunca ser alcançada se todas
as transações após o OIT sejam terminadas corretamente, ou seja, se não
ocorrer uma nova "Interesting Transaction", o "sweeping" não vai ser
executado.
Você pode alterar o intervalo de transações em que o banco de dados vai ser
limpo:
gfix -h 10000 seu_banco.fdb //diminui para 10000 o intervalo de transações
Ou pode desativar o "sweeping" e para ativá-lo manualmente:
gfix -h 0 seu_banco.fdb // desabilita
gfix -s seu_banco.fdb // executa o "sweeping"
[]s
Carlos Sato
"Maglan Cristiano Diemer" <maglan em univates.br>
escreveu na mensagem news:418282B2.3050405 em univates.br...
Pessoal,
Tenho uma tabela no GDB que possui um
campo BLOB que armazena arquivos JPG, TIFF, etc.
Eventualmente os usuarios apagam registros
desta tabela (o comando é delete from ...).
Mas, o arquivo GDB não diminui de tamanho
até porque esse registro não é excluido fisicamente.
Há maneira de diminuir o tamanho do GDB no momento
que exclui um registro (ou fazer um exclusao fisica).
Eu sei que com Backup/Restore eu resolvo o problema.
Existe alguma maneira sem Backup/Restore ?
Maglan
______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
Para editar sua configuração na lista, use o endereço
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Mais detalhes sobre a lista de discussão lista