Lista rápida de verificação de desempenho para banco de dados Firebird
Windows
-
Defina o plano de energia para alto desempenho (+20% no Windows Server 2016+)?
-
Defina a Política de Cache de Gravação para unidades como Habilitar Cache de Gravação
-
No caso de RAID, verifique se o driver moderno está instalado e se o RAID está configurado corretamente.
Linux
-
O Max Open Files está definido como 49999? Verifique com cat /proc/$(pgrep firebird)/limits, o padrão é 4096, aumente se necessário: defina-o no arquivo de serviço do Firebird como LimitNOFILE=49999
-
Verifique a contagem de VMA cat /proc/sys/vm/max_map_count, o padrão é 64K, deve ser definido como 250K: adicione ao /etc/sysctl.conf a linha vm.max_map_count=250000
Configuração do Firebird (recomendações apenas para Firebird 3)
-
Certifique-se de não usar o DefaultDBCacheBuffers padrão, eles são muito baixos (256 e 8K)! Defina 1024 para SuperClassic e 100K para SuperServer. Não use Classic no Firebird 3, ele é lento.
-
Certifique-se de que o DefaultDBCacheBuffers não seja substituído no cabeçalho do banco de dados: verifique com gstat -h database -> Page Buffers, deve ser 0. Defina-o como 0 com gfix -buffers 0.
-
Defina FileSystemCacheThreshold =100M para usar o cache de arquivos do SO
-
Para SuperServer, aloque para DefaultDBCacheBuffers menos de 30% da RAM. Se você tiver muitos bancos de dados, conte a memória para todos eles e use databases.conf para configurá-los separadamente. Verifique o número total de conexões e bancos de dados com o comando:
fbsvcmgr.exe localhost:service_mgr user sysdba password masterkey info_svr_db_info
-
Para SuperServer e SuperClassic, defina TempCacheLimit como 25% da RAM, para Classic - 64M.
-
Defina LockMemSize=30M, é um bom valor inicial, depois monitore o crescimento da tabela de locks com o comando fblockprint -d databasename e aumente LockMemSize se necessário
-
Defina LockHashSlots=20011, é um bom valor inicial, monitore Hash Lengths no lockprint
Banco de dados
-
Para bancos de dados > 50Gb, use o tamanho máximo de página: 16Kb (padrão 8Kb), para otimizar a leitura de IO e a profundidade dos índices. Defina-o durante a restauração com o switch “page”: gbak**-c -page 16384**
-
Não use o flag no_reserve para bancos de dados não somente leitura. Remova-o com **gfix -**use reserve
-
Monitore a diferença entre os marcadores de transações (OIT, OST, OAT, Next) do gstat -h.
-
Grande (OST-OIT) significa que o banco de dados provavelmente contém muitas versões de lixo e requer sweep. Agende um sweep explícito para o período noturno com gfix -sweep
-
Grande (Next-OAT) significa uma transação gravável ativa longa que bloqueia a coleta de lixo. Verifique as tabelas MON$ para ver qual aplicativo mantém a transação aberta e corrija-o.
Teste de 5 minutos para estimar o desempenho do Firebird
Use o script open-source INSERT-UPDATE_DELETE: www.ib-aid.com/dbtestAtualmente, o servidor testado mais rápido mostrou 18140 registros inseridos por segundo, qual será o seu resultado?
Como melhorar o desempenho do Firebird além deste ajuste simples?
Experimente o serviço de otimização Firebird da IBSurgeon www.ib-aid.com/perf: sabemos como fazer seu Firebird trabalhar mais rápido.