[firebase-br] delete com exclusao fisica

Carlos H. Cantu listas em warmboot.com.br
Seg Nov 1 10:11:28 -03 2004


Mesmo com sweep/garbage collection, o banco de dados não vai diminuir
de tamanho.

[]s
Cantu
http://www.warmboot.com.br
FireBase - http://www.FireBase.com.br

CS> Segundo os manuais do Interbase, existe sim uma outra maneira sem ser pelo
CS> Backup/Restore.

CS> Na verdade o Firebird/Interbase já faz isso de forma automática, através de
CS> sua função de "sweeping" que resolve o problema de transações "em aberto" e
CS> elimina por conseqüencia todo o "lixo" do banco de dados.

CS> Só que essa forma automática ocorre após terem decorridos um determinado
CS> número de transações (padrão = 20000) entre uma "Interesting Transaction" e
CS> outra. Essa "Interesting Transaction" é uma transação que não foi completada
CS> por um Commit ou um Rollback. Quando ocorre a primeira vez esse problema, o
CS> Firebird/Interbase marca essa transação como OIT (Oldest Interesting
CS> Transaction) e ao ocorrer a próxima, verifica se a diferença entre elas é
CS> maior que o intervalo determinado, no padrão 20000 transações. Caso seja, o
CS> servidor inicia o processo de "sweeping". Importante: o banco de dados não
CS> precisa estar em modo exclusivo, os usuários podem estar conectados.

CS> É importante entender que essa diferença pode nunca ser alcançada se todas
CS> as transações após o OIT sejam terminadas corretamente, ou seja, se não
CS> ocorrer uma nova "Interesting Transaction", o "sweeping" não vai ser
CS> executado.

CS> Você pode alterar o intervalo de transações em que o banco de dados vai ser
CS> limpo:

CS> gfix -h 10000 seu_banco.fdb  //diminui para 10000 o intervalo de transações

CS> Ou pode desativar o "sweeping" e para ativá-lo manualmente:

CS> gfix -h 0 seu_banco.fdb    // desabilita

CS> gfix -s seu_banco.fdb    // executa o "sweeping"

CS> []s
CS> Carlos Sato


CS> "Maglan Cristiano Diemer" <maglan em univates.br>
CS> escreveu na mensagem news:418282B2.3050405 em univates.br...
CS> Pessoal,

CS> Tenho uma tabela no GDB que possui um
CS> campo BLOB que armazena arquivos JPG, TIFF, etc.

CS> Eventualmente os usuarios apagam registros
CS> desta tabela (o comando é delete from ...).

CS> Mas, o arquivo GDB não diminui de tamanho
CS> até porque esse registro não é excluido fisicamente.

CS> Há maneira de diminuir o tamanho do GDB no momento
CS> que exclui um registro (ou fazer um exclusao fisica).

CS> Eu sei que com Backup/Restore eu resolvo o problema.
CS> Existe alguma maneira sem Backup/Restore ?

CS> Maglan


CS> ______________________________________________
CS> FireBase-BR (www.firebase.com.br) - Hospedado em www.bavs.com.br
CS> Para editar sua configuração na lista, use o endereço
CS> http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br









Mais detalhes sobre a lista de discussão lista