Como otimizar a performance do Firebird?

| 3 minutos

Qual o problema?

O cliente pode entrar em contato relatando que o acesso ou o uso do sistema pode estar lento.

Porque esse problema acontece?

Inúmeras são as causas que podem acarretar a lenditão do sistema mas existe algumas configurações e procedimentos que podem ser feitos para obter melhor performance do Firebird.

Antes de fazer qualquer configuração no Firebird certifique-se que os Requisitos Mínimos estejam de acordo com as recomendações.

Firebird Classic, SuperClassic or Superserver?

O Firebird suporta estes três tipos de instalação. Recomenda-se usar o tipo de instalação Superserver para as nossas soluções que é a opção padrão de instalação do Firebird.

Arquitetura Superserver

Arquitetura Superserver

No Superserver um único processo (fbserver) escuta a porta Firebird e serve todas as conexões, usando threads para lidar com as solicitações.

Procedimentos e Ajustes

Na pasta de instalação do Firebird C:\Program Files\Firebird\Firebird_2_5 no Windows se encontra o arquivo firebird.conf, e dentro dele há várias configurações com suas explicações. Serão listadas algumas configurações que julgamos importantes que poderão ser alteradas para melhor aproveitamento do que o Firebird pode oferecer.

Antes de realizar qualquer modificação no arquivo firebird.conf é recomendável que seja feita uma cópia deste arquivo pois caso após os testes não houver melhoras, as configurações padrões poderão ser restabelecidas.

DefaultDbCachePages

O Firebird Superserver usam um único processo e aloca por padrão um cache compartilhado de 2048 páginas para todas as conexões com um banco de dados por padrão. Ao aumentar os valores de DefaultDbCachePages o Firebird fará menos acesso ao disco para buscar informações causando uma melhora do desempenho das pesquisas.

Para modificar esta configuração localize a propriedade DefaultDbCachePages no arquivo firebird.conf e modifique os valores em função da memória do servidor de acordo com a tabela:

Memória do Servidor Ajuste
4 GB DefaultDbCachePages = 4096
8 GB DefaultDbCachePages = 8192
16 GB DefaultDbCachePages = 16384

Após modificar estas configurações reinicie o Firebird e realize um backup/restore do banco de dados modificando PAGE_SIZE para o mesmo DefaultDbCachePages.

PAGE_SIZE do banco

Quando um arquivo é gravado no disco, mesmo tendo 1 único byte, o disco aloca um espaço mínimo chamado de cluster (o tamanho mais comum de 1 cluster é 4096 bytes). O Firebird grava os dados de acordo com a o PAGE_SIZE do banco de dados.

Para modificar o PAGE_SIZE realize o backup com o comando gbak.exe -g -b -z -l -v -user "sysdba" -password "masterkey" "ALIAS" "backup.fbk" e o restore do banco modificando o tamanho da página em função do DefaultDbCachePages de acordo com a tabela:

DefaultDbCachePages Comando de Restore
4096 gbak.exe -p 4096 -r o -v -l -g -user "sysdba" -password "masterkey" "backup.fbk" "ALIAS"
8192 gbak.exe -p 8192 -r o -v -l -g -user "sysdba" -password "masterkey" "backup.fbk" "ALIAS"
16384 gbak.exe -p 16384 -r o -v -l -g -user "sysdba" -password "masterkey" "backup.fbk" "ALIAS"

O tamanho da página (PAGE_SIZE) no Firebird 2.5 pode ser 4096, 8192 ou 16384.

CpuAffinityMask

O padrão do Superserver é usar apenas o primeiro processador lógico da máquina. Para fazer uso de todos os seus processadores esta configuração deverá ser alterada de acordo com o número de núcleos do Servidor.

Esta configuração surte efeito somente no Firebird Superserver em sistemas operacionais Windows.

Para modificar esta configuração localize a propriedade CpuAffinityMask no arquivo firebird.conf e modifique os valores em função do número de núcleos do processador do Servidor de acordo com a tabela:

Núcleos do Servidor Ajuste
1 Núcleo CpuAffinityMask = 1
2 Núcleos CpuAffinityMask = 3
3 Núcleos CpuAffinityMask = 7
4 Núcleos CpuAffinityMask = 15
6 Núcleos CpuAffinityMask = 63
7 Núcleos CpuAffinityMask = 127
8 Núcleos CpuAffinityMask = 255

Para que as configurações funcionem não poderá ter a cerquilha (#) antes da mesma. Caso queira que o Firebird assuma novamente o valor padrão acrescente a cerquilha(#) no início da configuração.

Fontes

  1. Classic, SuperClassic or Superserver?
  2. Qual tamanho de página devo usar?
  3. Entendendo o consumo de memória do FB
  4. Firebird server architectures
  5. Optimized Firebird Configs
Pedro Peixoto Firebird DefaultDbCachePages PAGE_SIZE CpuAffinityMask Superserver
Este artigo ajudou você?
 9
 6