...
Mude seu plano de energia para "Alto Desempenho" (ou Ultimate, se você tiver). Isso pode aumentar o desempenho da CPU em até 20%, porque faz com que os núcleos da CPU funcionem mais rápido com maior consumo de energia. Para alterar seu plano de energia, vá para as configurações de energia do Windows ("Opções de energia") e escolha "Alto desempenho" (em vez de "Equilibrado", que é o usual). Veja na imagem abaixo que o WIndows geralmente traz pré-configurado o plano equilibrado, mude para um dos dois citados acima.
Ative a opção "Permitir que o serviço interaja com a área de trabalho" para o serviço Firebird
...
gfix -buff 0 /path/to/database.fdb -user SYSDBA -pass masterkey
Verifique o desempenho do disco no servidor Firebird
Entre os motivos de lentidão, a situação mais frequente é quando o subsistema de disco funciona mais lentamente do que o esperado e leva à lentidão do banco de dados Firebird. É estritamente necessário verificar o desempenho do subsistema de disco do ponto de vista do Firebird.
Existem várias ferramentas universais para medir o desempenho do disco da maneira comum, elas fornecem a estimativa em MB/s ou em IOPS. O mais popular é o CrystalDiskMark (https://crystalmark.info/).
Em nossa experiência, o CrystalDiskMark fornece uma estimativa adequada da velocidade do disco e pode ser usado como ponto de partida. O exemplo da saída do CrystalDiskMark no formato de texto:
-----------------------------------------------------------------------------
CrystalDiskMark 8.0.4 x64 (C) 2007-2021 hiyohiyo
Crystal Dew World: https://crystalmark.info/
------------------------------------------------------------------------------
* MB/s = 1,000,000 bytes/s [SATA/600 = 600,000,000 bytes/s]
* KB = 1000 bytes, KiB = 1024 bytes
[Read]
SEQ 1MiB (Q= 8, T= 1): 2334.517 MB/s [ 2226.4 IOPS] < 3588.90 us>
SEQ 1MiB (Q= 1, T= 1): 1799.226 MB/s [ 1715.9 IOPS] < 582.13 us>
RND 4KiB (Q= 32, T= 1): 411.333 MB/s [ 100423.1 IOPS] < 318.20 us>
RND 4KiB (Q= 1, T= 1): 25.074 MB/s [ 6121.6 IOPS] < 163.02 us>
[Write]
SEQ 1MiB (Q= 8, T= 1): 999.476 MB/s [ 953.2 IOPS] < 8341.94 us>
SEQ 1MiB (Q= 1, T= 1): 1543.671 MB/s [ 1472.2 IOPS] < 675.37 us>
RND 4KiB (Q= 32, T= 1): 83.297 MB/s [ 20336.2 IOPS] < 1564.70 us>
RND 4KiB (Q= 1, T= 1): 70.380 MB/s [ 17182.6 IOPS] < 57.63 us>
Profile: Default
Test: 64 GiB (x5) [C: 89% (828/931GiB)]
Mode: [Admin]
Time: Measure 5 sec / Interval 5 sec
Date: 2022/11/29 17:32:33
OS: Windows 11 [10.0 Build 22621] (x64)
Porém, não basta ter a garantia de que o disco é realmente rápido para o Firebird, pois o teste é sintético.
Simples ”Insert Update Delete Test”
Para medir o desempenho do disco do Firebird, a IBSurgeon desenvolveu o script, que cria o banco de dados, insere 1 milhão de registros, atualiza esses registros e depois os exclui.
O script é executado pela ferramenta padrão isql.exe, com a própria configuração do Firebird.
Essencialmente, é um teste de thread único que mede o desempenho do Firebird para o caso de uma operação de processamento de “pico” – o resultado do teste é um arquivo de banco de dados com tamanho de 3,6 Gb.
O resultado é apresentado na forma ou número de milissegundos para executar Insert 1 Mln, Update 1 Mln, Delete 1 Mln. registros separadamente para a operação e para o tempo de confirmação.
Desde a criação do script, pessoas o rodaram em vários servidores (pessoas da comunidade rodaram o teste em vários servidores e enviaram seus resultados), e agora temos a tabela e o diagrama com os resultados: https://ib-aid.com/images/testresult/insert_update_delete_results.xls
Para facilitar a comparação, o resultado é apresentado no formato de Inserções/segundos, Atualizações/segundos, Exclusões/segundo.
Como executar Simples Insert Update Delete Test
Para executar o teste com Firebird padrao, copie e cole o script do site:
e salve-o no arquivo, por exemplo, /opt/script1.sql ou c:\tempscript1.sql.
Em seguida, edite o caminho na 1ª linha do script para o banco de dados de teste a ser criado – ele deve estar no mesmo drive onde está localizado o banco de dados principal:
create database "localhost:DISK:PATHinserttest4.fdb"
user "SYSDBA" password "masterkey" page_size 16384;
Evite situações em que o disco testado é carregado com operação longa, como backup ou cópia de grandes volumes de dados ou número máximo de usuários.
A melhor opção é executar o script no modo exclusivo.
Execute o script no prompt de comando com um comando como este:
"C:\Program Files\Firebird\Firebird_3_0\isql.exe” -i /c:\tempscript1.sql
A saída estará na tela (apenas a 1ª parte para INSERTs é mostrada abaixo):
"C:\Program Files\Firebird\Firebird_3_0\isql.exe” -i c:\Temptest1.sql
Use CONNECT or CREATE DATABASE to specify a database
INSERTED_ROWS 1000000
ELAP_MS 58890
Current memory = 702384256
Delta memory = 3215392
Max memory = 704756112
Elapsed time= 58.894 sec
Buffers = 40960
Reads = 9
Writes = 88015
Fetches = 25332353
Current memory = 702342416
Delta memory = -41840
Max memory = 704756112
Elapsed time= 4.846 sec
Buffers = 40960
Reads = 1
Writes = 40254
Fetches = 2
Como interpretar os resultados
Observe que é necessário somar o tempo da operação e seu tempo de confirmação e, em seguida, dividir 1000000 pelo tempo total.
Para o exemplo acima:
INSERT SPEED = 1000000 / (58.984+4.846) = 15666 inserts /seconds
Resultados na forma de operação por segundo - por exemplo, 6.000 inserções/segundo, 5.200 atualizações/segundo, 7.300 exclusões/segundo, podem ser comparados com a tabela/gráfico de medições de desempenho.
A tabela está aqui: https://ib-aid.com/images/testresult/insert_update_delete_results.xls
Se você vir os resultados acima do meio do gráfico/tabela, isso significa que a velocidade do disco está OK e o motivo da lentidão estará em outra área que não seja o hardware.
Outra coisa a verificar é a hora de cometer. Se você perceber que o tempo total de teste contém mais de 20% do commit, isso significa que pode haver um problema com o cache de gravação.
Se você perceber que o resultado do teste está abaixo da média e você possui discos SSD, significa que há algum problema com a configuração do disco ou driver.
As possíveis razões pelas quais o disco pode ser lento
- Sistema das archuivos não ideal para Firebird
- Ausência de Unidade de Backup de Bateria para RAID (ou bateria descarregada)
- Ausência de driver adequado (ou o driver foi desativado pelo fornecedor para impedir que você use o disco de nível de consumidor no sistema operacional do servidor)
- Limite de IOPS para VM (por exemplo, o Azure tem limites de IOPS muito baixos para máquinas virtuais de uso geral)
- Processo de backup ativo ou outro processamento (cópia, reorganização, etc.) de grandes dados no disco.
- O disco esta morrendo: blocos defeituosos, superaquecimento, etc. Sempre verifique os dados S.M.A.R.T do disco
