Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

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.

Image Modified
    • 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:

https://ib-aid.com/en/simple-insert-update-delete-test-for-firebird/#how_to_run_firebird_performance_test

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

    1. Sistema das archuivos não ideal para Firebird
    2. Ausência de Unidade de Backup de Bateria para RAID (ou bateria descarregada)
    3. 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)
    4. Limite de IOPS para VM (por exemplo, o Azure tem limites de IOPS muito baixos para máquinas virtuais de uso geral)
    5. Processo de backup ativo ou outro processamento (cópia, reorganização, etc.) de grandes dados no disco.
    6. O disco esta morrendo: blocos defeituosos, superaquecimento, etc. Sempre verifique os dados S.M.A.R.T do disco