[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