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