Como fazer o Firebird funcionar 20% mais rápido no Windows Server 2016 em menos de 1 minuto
Cada vez mais usuários migram para o Windows Server 2016 a partir de versões antigas, e alguns deles notaram que o Windows Server 2016 funciona mais lentamente do que versões anteriores, mesmo no mesmo hardware com o mesmo banco de dados.
Fizemos vários testes no Windows Server 2016 e Firebird e descobrimos, entre outras coisas, a opção que influencia drasticamente o desempenho do Windows Server 2016: o plano de energia.
Por padrão, o Windows 2016 tem o plano de energia «Equilibrado», que automaticamente equilibra o desempenho com o consumo de energia em hardware capaz. Bem, parece inofensivo, mas na verdade, o plano de energia Equilibrado no Windows Server 2016 suprime bastante o desempenho da CPU e reduz o desempenho geral do servidor.
É possível alternar o plano de energia em tempo real, sem necessidade de reiniciar. Veja o efeito de habilitar o plano de energia «Alto desempenho» no servidor com banco de dados Firebird, que atende 70 conexões:

Efeito do plano de energia de Alto Desempenho na utilização da CPU
Ok, isso pode ser apenas utilização de CPU, e quanto ao desempenho geral? Executamos vários testes, semelhantes ao TPCC (simulação de aplicação OLTP) e obtivemos estes números:
| Plano de Energia | Throughput TPC-C (quanto maior, melhor) |
|---|---|
| Equilibrado | 17029 |
| Alto Desempenho | 21226 |
Este teste é altamente limitado por disco, então a diferença é de apenas 20%; para operações intensivas de CPU, a melhoria pode ser ainda maior.
Além disso, realizamos o teste de restauração (com gbak -c) de um banco de dados Firebird 2.5 de 144Gb com diferentes planos de energia:
| Plano de Energia | Tempo de restauração (quanto menor, melhor) |
|---|---|
| Equilibrado | 4 horas 7 minutos |
| Alto Desempenho | 2 horas 35 minutos |
A única opção de «economia de energia» quase dobrou o desempenho da restauração! Por que temos um aumento de desempenho tão notável? A resposta está nos índices: durante a restauração, eles usam intensivamente a CPU para ordenar valores.
Veja os valores de timestamps da restauração do gbak (em segundos) para os 5 maiores índices.
Com o plano de energia equilibrado no gbak:
gbak: 9529.339 1230.343 5028900 346529 activating and creating deferred index INDMF_TAG_PLC_DATA_DT_D
gbak: 10787.610 1258.270 5028909 233365 activating and creating deferred index INDMF_TAG_PLC_DATA_TAG_D
gbak: 11824.329 1036.718 5028907 216488 activating and creating deferred index INDMF_TAG_PLC_DATA_LU_D
gbak: 12571.012 746.683 5028907 265160 activating and creating deferred index INDMF_TAG_PLC_DATA_C1
gbak: 13304.334 733.321 5028908 359393 activating and creating deferred index PKMNF2_DOC_DOWNTIME
Tempo total: 3775 segundos
Com o plano de energia de Alto Desempenho
gbak: 5301.785 615.045 5028900 346529 activating and creating deferred index INDMF_TAG_PLC_DATA_DT_D
gbak: 5924.667 622.882 5028909 233365 activating and creating deferred index INDMF_TAG_PLC_DATA_TAG_D
gbak: 6569.815 645.147 5028907 216488 activating and creating deferred index INDMF_TAG_PLC_DATA_LU_D
gbak: 7186.322 616.506 5028907 265160 activating and creating deferred index INDMF_TAG_PLC_DATA_C1
gbak: 7894.340 708.018 5028908 359393 activating and creating deferred index PKMNF2_DOC_DOWNTIME
Tempo total: 2593 segundos
Resumo
Então, essa configuração simples em Painel de Controle -> Hardware -> Opções de Energia pode melhorar muito o desempenho do banco de dados Firebird no Windows Server 2016.
Por favor, verifique e habilite o plano de energia de Alto Desempenho imediatamente!
Mais leituras sobre desempenho de banco de dados Firebird:
- 45 Maneiras de Acelerar o Banco de Dados Firebird
- Novo monitoramento de desempenho no HQbird 2018
- Serviço de Otimização de Desempenho Firebird
Agradecimento especial a Oleg Matveev pela ajuda na preparação deste artigo!