Boa noite, pessoal!
Vários MVPs já estão divulgando as novas funcionalidades do RAD Studio 10.2, ou Tokyo, desde a semana passada. Neste artigo, pretendo apresentar uma nova funcionalidade do componente TFDFBNBackup
do FireDAC para desenvolvedores que trabalham com o recurso de nbackup do banco de dados Firebird. Artigo bem rápido!
Operações de I/O (Input/Output) normalmente são armazenadas em cache pelo sistema operacional para aprimorar o desempenho, uma vez que o acesso à memória é mais rápido que o acesso ao disco. Entretanto, em algumas situações, este cache pode não ser tão vantajoso ou viável em função da natureza do cache ou da ascensão de discos mais modernos, como SSD. Por isso, existe um recurso, conhecido como Direct I/O, que ignora o armazenamento em cache, permitindo que aplicações gravem dados diretamente no disco.
Desde a versão 2.1.4 do Firebird, o utilitário nbackup disponibiliza um parâmetro para ligar ou desligar o Direct I/O, tornando-o opcional. Porém, no RAD Studio, o componente TFDFBNBackup
sempre manteve essa opção habilitada (Direct I/O On), causando algumas inconveniências para desenvolvedores que realizam backups do banco de dados utilizando este componente. Essa questão foi até levantada em um dos tópicos da Embarcadero Community.
Como solução, no Delphi Tokyo, o componente TFDFBNBackup
tornou este parâmetro opcional através de uma nova propriedade chamada Direct
:
Ao configurar a propriedade como ndOff
, o backup do banco de dados ganha performance. Para tirar a prova, preparei um banco de dados pequeno como exemplo, de apenas 20MB, somente para comparação do parâmetro de tempo. Eis o resultado com cada valor:
- Valor
ndOn
:Â 00.710 segundos - Valor
ndOff
:Â 00.296 segundos
Claro, neste teste, a diferença é mÃnima por conta do tamanho do arquivo. Em bancos de dados volumosos – com Gigabytes de tamanho – a redução de tempo será evidentemente maior.
Vale lembrar também que o método Backup do componente TFDFBNBackup
pode ser invocado em um processamento paralelo, por exemplo, com o TTask
:
1 2 3 4 5 6 |
TTask.Create( procedure() begin FDFBNBackup.Backup; ShowMessage('Backup concluÃdo!'); end).Start; |
Por hoje é só, pessoal.
Volto em breve! Abraço!
André, desculpe publicar neste arquivo mas não consegui encontrar onde poderia enviar uma mensagem.
Até oito meses atrás usava o dbexpress para acessar o banco, mudei para o Delphi xe8 e passei a usar o FireDac. A performance de acesso ao banco caiu pela metade, ja revi selects, criei Ãndices e não resolve.
Você tem algum arquivo que fala sobre isto? Vale a pena mudar pra o Unidac?
Desde já agradecida.
Olá, Marlene, tudo bem?
Essa lentidão teoricamente não deveria ocorrer. O FireDAC possui mecanismos de desempenho excelentes quando comparado às outras tecnologias de conexão.
Vou entrar em contato para estudarmos este caso.
Abraço!
Eu estou usando Delphi XE 10 Seattle. Como faço para o bkp ficar menor? Eu fiz da minha base de 65megas e ficou como o mesmo tamanho.
Olá, Marcos.
Para reduzir o tamanho do backup, eu recomendo a utilização do utilitário gbak do próprio Firebird.
Acesse o link abaixo e procure por “gbak” para encontrar uma demonstração da linha de comando:
https://www.andrecelestino.com/perguntas-respostas-comentarios-blog-faq/
Abraço!