Configurações para melhorar o desempenho

Este tutorial tem o objetivo de apresentar as configurações do Firebird, para obter um melhor desempenho.

Como existem diferentes arquiteturas de servidores, diferentes necessidades, investimentos, etc, o Firebird vem de fábrica configurado com parâmetros para atender e funcionar relativamente bem em todas as situações. Porém quando temos a necessidade de ir além, e obter um desempenho melhor do servidor de banco de dados, podemos configurar manualmente esses parâmetros de acordo com a necessidade e arquitetura.

Os parâmetros citados ficam no arquivo firebird.conf, que está no diretório de instalação do Firebird, e podemos abrir com um simples editor de texto e alterar os parâmetros desejados. Nesse mesmo arquivo há a explicação de cada parâmetro, então em caso de dúvidas verifique-o. 

Antes de qualquer alteração considere fazer uma cópia de backup do arquivo firebird.conf

Os principais parâmetros para otimização são:

  • DefaultDbCachePages - Define o tamanho do arquivo de paginação utilizado pelo cache da máquina. Quanto maior o valor, maior a quantidade de dados que trafegam em um mesmo processo simultâneo, resultando em pesquisas mais rápidas.
  • FileSystemCacheThreshold - Esta opção define o tamanho do arquivo de cache que o Firebird utiliza para salvar os arquivos da paginação da configuração acima.
  • FileSystemCacheSize - Esta configuração define a porcentagem da memória o Firebird pode utilizar para o cache. Não é recomendado definir valores acima de 70 ou 80 se o servidor não for 100% dedicado ao banco de dados.
  • CpuAffinityMask - Esta configuração aplica-se apenas a servidores com sistema operacional Windows e a arquitetura Super Server, ele define quantos "cores" do processador o Firebird pode utilizar para os processos.

Para aplicar as configurações é necessário retirar o caractere # da frente da linha

Para cada arquitetura do Firebird são recomendados diferentes configurações, veja a seguir:

Super Server

  • Configuração para servidor com processador dual-core, e pelo menos 4GB memória:

DefaultDbCachePages = 4096
FileSystemCacheThreshold = 67108864
FileSystemCacheSize = 70
CpuAffinityMask = 3
  • Configuração para servidor com processador dual-core, e pelo menos 8GB memória:

DefaultDbCachePages = 8192
FileSystemCacheThreshold = 134217728
FileSystemCacheSize = 70
CpuAffinityMask = 3
  • Configuração para servidor com processador quad-core ou superior, e acima de 8GB memória:

DefaultDbCachePages = 16384
FileSystemCacheThreshold = 268435456
FileSystemCacheSize = 80

Para utilizar:
2 processadores/núcleos: CpuAffinityMask = 3
3 processadores/núcleos: CpuAffinityMask = 7
4 processadores/núcleos: CpuAffinityMask = 15
5 processadores/núcleos: CpuAffinityMask = 31
6 processadores/núcleos: CpuAffinityMask = 63
7 processadores/núcleos: CpuAffinityMask = 127
8 processadores/núcleos: CpuAffinityMask = 255

Para mais processadores, o cálculo é: 2^x-1 (Exemplo: 2^12-1 = 4095)

Para ambas as configurações acima ainda considere os seguintes parâmetros de acordo com a versão instalada:

  • Versão do Firebird 32 bits
TempCacheLimit = 367108864
LockHashSlots = 11011
  • Versão do Firebird 64 bits
TempCacheLimit = 967108864
LockHashSlots = 20011

Super Classic

Utilização em ambientes com muitos usuários e processos, configuração para servidor com processador dual-core ou superior, e pelo menos 8GB memória:

  • Versão do Firebird 32 bits
DefaultDbCachePages = 256
TempBlockSize = 2048576
TempCacheLimit = 27108864
LockMemSize = 3048576
LockHashSlots = 20011
  • Versão do Firebird 64 bits, servidor com poucas conexões
DefaultDbCachePages = 384
TempBlockSize = 2048576
TempCacheLimit = 567108864
LockMemSize = 5048576
LockHashSlots = 30011
  • Versão do Firebird 64 bits, servidor com 8GB de memória, e até 150 conexões
DefaultDbCachePages = 768
TempBlockSize = 2048576
TempCacheLimit = 1073741824
LockMemSize = 30971520
LockHashSlots = 30011
  • Versão do Firebird 64 bits, servidor com 16GB de memória ou mais, e até 300 conexões
DefaultDbCachePages = 1500
TempBlockSize = 2048576
TempCacheLimit = 2100000000
LockMemSize = 31457280
LockHashSlots = 49999

Classic Server

  • Até 8GB de memória
DefaultDbCachePages = 384
TempBlockSize = 2048576
  • Até 8GB de memória, versão do Firebird 32 bits
TempCacheLimit = 367108864
LockHashSlots = 11011
LockMemSize = 5048576
  • Até 8GB de memória, versão do Firebird 64 bits
TempCacheLimit = 77108864
LockHashSlots = 30011
LockMemSize = 7048576
  • 16 ou mais GB de memória, versão do Firebird 64 bits
DefaultDbCachePages = 1500
TempBlockSize = 2048576
TempCacheLimit = 67108864
LockMemSize = 31457280
LockHashSlots = 49999

Após feito as alterações no arquivo, gstat -h databasename e verifique se os buffers de página são 0. Se estiver definido com outro valor, defina-o como 0 com o comando gfix -buff 0.

Importante!

  • Sempre renomeie e mantenha uma cópia do firebird.conf original e, para o Firebird 3.0, databases.conf;
  • Para Firebird 3.0, verifique sempre o databases.conf! Deve haver os valores que você definiu explicitamente. Certifique-se de entender por que você os definiu.
  • Lembre-se: as configurações do firebird.conf são aplicadas a TODOS os bancos de dados ativos no servidor como valores padrão, databases.conf (no 3.0) pode substituir o firebird.conf.
  • Não se esqueça do ajuste geral do sistema operacional: consulte essa breve lista de verificação de desempenho.
    Mais informações aqui.

 

Voltar à página inicial

 

Back to top