[firebase-br] shrink database

Carlos H. Cantu listas em warmboot.com.br
Sex Dez 14 08:31:53 -03 2018


Aparentemente é um "problema" no IBAnalyst/gstat... até o Firebird
2.5, o gstat não conseguia contabilizar o espaço ocupado pelos blobs
quando os mesmos são armazenados em páginas de blobs (e não em
páginas de dados). Então acredito que seus XMLs realmente estejam
consumindo os 11GB, apesar do IBA (que se baseia nas estatísticas)
mostrar um valor muito menor.

Outra coisa que se deve levar em conta é que uma página de blob só
armazena dados de um único blob, então dependendo do tamanho do blob
armazenado lá e do próprio tamanho da página, pode haver um certo
"desperdício" de espaço.

PS: Experimente aumentar o tamanho da página de dados do seu banco, de
4K para 8K. Com isso, provavelmente mais "XMLs" irão caber em uma
página de dados e, possivelmente, haverá alguma diminuição no tamanho
do arquivo.

[]s
Carlos H. Cantu
eBook Guia de Migração para o FB 3 - www.firebase.com.br/guiafb3.php
www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br

E> Obrigado pela resposta. 


E> No caso mencionado anteriormente a tabela é exclusiva para BLOB.


E> Utilizamos o campo BLOB para armazenar arquivos .XML de NFs.  O
E> detalhe é que a tabela possui dois campos BLOBs, XML de envio e retorno.  



E> Fiz alguns testes para identificar o impacto desta tabela no tamanho do banco. 


E> O tamanho físico do banco era de 16GB. 
E> Page Size configurado com valor 4096.


E> O Database Analyst mostrou que o size da tabela é 748mb.  


E> Fiz BACKUP e RESTORE no banco, reduziu de 16GB para 13GB em disco.
E> O Database Analyst mostrou que o size da tabela caiu para 723mb.


E> Para entender o quanto essa tabela representa em disco, executei o
E> DROP, realizei BACKUP e RESTORE no banco. O tamanho do banco reduziu de 13GB para 2GB. 


E> Conclusão: a tabela está ocupando cerca de 11GB em disco.


E> Se puder me apontar uma direção para reduzir o tamanho em disco, agradeço muito.


E> Abraços!
E> Em qui, 13 de dez de 2018 às 10:47, Carlos H. Cantu
E> <listas em warmboot.com.br> escreveu:

E> Em resumo: transações presas por muito tempo impedem a coleta de lixo,
E>  portanto, o lixo vai acumulando e o espaço ocupado por ele só será
E>  reaproveitado após a coleta de lixo ser executada com sucesso.

E>  Blobs podem fragmentar os dados nas páginas do banco. Se esse é o
E>  caso, o recomendado é criar uma tabela só para armazenar os blobs, e
E>  fazer um link de 1 para 1 com a outra tabela relacionada.

E>  PS: Transações ReadCommited + ReadOnly não impedem a coleta de lixo.

E>  PS/2: Por questões de segurança, a lista não permite anexos.


E>  []s
E>  Carlos H. Cantu
E>  eBook Guia de Migração para o FB 3 - www.firebase.com.br/guiafb3.php
E> www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br

 E>> Bom dia a todos,


 E>> Carlos H. Cantu, poderia citar um exemplo de mau uso do controle
 E>> transacional que poderia causar o aumento demasiado de tamanho do banco de dados?


 E>> Gostaria de entender melhor como otimizar o uso de espaço para
 E>> tabelas com campo BLOB. Não encontrei tópicos falando especificamente do assunto.


 E>> Tenho casos em que o Database Analyst apontou que o RealFill da
 E>> tabela está com valor 4. Se aumentar o tamanho da página consigo
 E>> reduzir o espaço alocado em disco para um banco de dados já populado?


 E>> Em anexo o resultado da ferramenta Database Analyst.


 E>> Abraços!




 E>> Em sáb, 8 de dez de 2018 às 11:00, Carlos H. Cantu
 E>> <listas em warmboot.com.br> escreveu:

 E>> O fato do banco não "enxugar" não é um problema, e sim um benefício. É
 E>>  sempre mais rápido reaproveitar um espaço previamente alocado do que
 E>>  solicitar ao SO pra alocar mais espaço no disco.

 E>>  Se o seu banco está aumentando de tamanho demasiadamente, sugiro que
 E>>  reveja seu controle transacional, pois possivelmente a coleta de lixo
 E>>  não está conseguindo fazer seu papel satisfatoriamente, impedindo que
 E>>  o espaço ocupado pelo "lixo" seja reaproveitado como deveria.

 E>>  []s
 E>>  Carlos H. Cantu
 E>>  eBook Guia de Migração para o FB 3 - www.firebase.com.br/guiafb3.php
 E>> www.FireBase.com.br - www.firebirdnews.org - blog.firebase.com.br

  GB>>> Também gostaria que existisse algo nesse sentido, pois o banco nunca reduz
  GB>>> o tamanho, apenas aumenta e vai ficando "inchado". Aqui na empresa,
  GB>>> acabamos tendo que agendar um procedimento de backup/restore para os
  GB>>> clientes maiores, executado no início do dia no servidor a cada X dias
  GB>>> (conforme a quantidade de movimentações).

  GB>>> Seria interessante não ter que recriar todo o banco, o que considero um
  GB>>> procedimento drástico, visto que se acontecer qualquer imprevisto no
  GB>>> restore, o cliente fica com um banco incompleto e inutilizável.

  GB>>> Em qua, 5 de dez de 2018 20:55, centriscorps em gmail.com <
  GB>>> centriscorps em gmail.com escreveu:

  >>>> Você consegue reajustar o espaço em disco fazendo o famoso backup e em
  >>>> seguida restore.
  >>>>
  >>>> Renato
  >>>>
  >>>> Em qua, 5 de dez de 2018 às 18:57, Sofia Bonato de Moraes - EES <
  >>>> sbonato em ees.com.br> escreveu:
  >>>>
  >>>> > Boa tarde pessoal,
  >>>> >
  >>>> > O Firebird possui algum comando tipo shrink database para reajustar o
  >>>> > espaço
  >>>> > em disco?
  >>>> >
  >>>> > Obrigada.
  >>>> >
  >>>> > ______________________________________________
  >>>> > FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
  >>>> > Para saber como gerenciar/excluir seu cadastro na lista, use:
  >>>> > http://www.firebase.com.br/fb/artigo.php?id=1107
  >>>> > Para consultar mensagens antigas:
  >>>> > http://www.firebase.com.br/pesquisa_lista.html
  >>>> >
  >>>> ______________________________________________
  >>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
  >>>> Para saber como gerenciar/excluir seu cadastro na lista, use:
  >>>> http://www.firebase.com.br/fb/artigo.php?id=1107
  >>>> Para consultar mensagens antigas:
  >>>> http://www.firebase.com.br/pesquisa_lista.html
  >>>>
  GB>>> ______________________________________________
  GB>>> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
  GB>>> Para saber como gerenciar/excluir seu cadastro na lista, use:
  GB>>> http://www.firebase.com.br/fb/artigo.php?id=1107
  GB>>> Para consultar mensagens antigas:
  GB>>> http://www.firebase.com.br/pesquisa_lista.html


 E>>  ______________________________________________
 E>>  FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
 E>>  Para saber como gerenciar/excluir seu cadastro na lista, use:
 E>> http://www.firebase.com.br/fb/artigo.php?id=1107
 E>>  Para consultar mensagens antigas:
 E>> http://www.firebase.com.br/pesquisa_lista.html




E>  ______________________________________________
E>  FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
E>  Para saber como gerenciar/excluir seu cadastro na lista, use:
E> http://www.firebase.com.br/fb/artigo.php?id=1107
E>  Para consultar mensagens antigas:
E> http://www.firebase.com.br/pesquisa_lista.html







Mais detalhes sobre a lista de discussão lista