Melhorar Desempenho Firebird

Configurações para performance

Quando instalado em um servidor dedicado, com um bom processador e memória, é possível fazer algumas configurações no Firebird para melhorar o seu desempenho.
O arquivo se localiza na pasta (por padrão) C:\Program Files\Firebird_2.5\ ou /opt/firebird/, dentro dele há várias configurações com suas explicações.
Abaixo seguem alguns exemplos de como configurar. Para isso, basta copiar as configurações abaixo e colar dentro do arquivo firebird.conf, dependendo das configurações do servidor.

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, e acima de 8GB memória:
DefaultDbCachePages = 16384
FileSystemCacheThreshold = 268435456
FileSystemCacheSize = 80
CpuAffinityMask = 3

Após feito as alterações no arquivo, reinicie o Firebird, e faça o processo de Backup e Restore do banco de dados definindo o Page Size igual ao que foi configurado na opção DefaultDbCachePages (a primeira da lista).

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 define quantos cores do processador o firebird pode utilizar para os processos. 3 para dual-core, 10 para quad-core, 21 para hexa-core. Definir apenas para os núcleos reais, pois o firebird anterior a versão 3.0 não utiliza todos os núcleos do processador. Esta opção aplica-se apenas a servidores com Windows.



*Aumentar o cache no sistema operacional.


* Aumentar Paginação do Windows.
*Liberar permissões no sistema operacional pasta 'Firebird'


Outros lembretes:
O segment size (tamanho do segmento) é definido para aumentar o desempenho de Entrada/SAÍDA dados no blob. Varia de acordo com o tipo de informação que se deseja armazenar. para menos curtos - mesmo que em alguns casos se estenda um pouco mais - pode-se definir o tamanho como 100 bytes, que informa devem ser processados blocos de 100 bytes de cada vez.
para vídeos ou gráficos grandes, deve ser informado um comprimento maior. o comprimento máximo é de 65536 bytes (64 Kb), isto porque todos os índices do blob são armazenados e lidos em bloco.
quando um blob é lido, o seu conteúdo é extraído em blocos por isso, quanto maior o bloco, maior o número de bytes processados simultaneamente, aumentando a performance.
lembrando que o segment size não limita o tamanho do campo, mas sim como ele é manipulado.
a limitação do campo se dá em função do tamanho da página (page size) informado ao criar o banco de dados.
-
Quando você tem textos maiors que o bloco, é que são processados:
Em uma quantidade de 100 caracteres, a serem gravados 2 blocos, 1 completo eo outro apenas 20 caracteres, atentar-se ao colocar segment size em um valor que não será alcançado pois são gravados sempre em blocos'Completos' se você informar o segmente size de 2048 e gravar apenas 5 caracteres, o espaço será ocupado por completo, sendo alocado um bloco de 2048 bytes sem necessidade.


1
2
3
4
5
6
7
Page size         Tam. máximo do blob
---------------------------------------------------
1Kb   (1024)  =>   64 Mb blod
2Kb   (2048)  =>  512 Mb
4Kb   (4096)  =>    4 Gb
8Kb   (8192)  =>   32 Gb
16kb (16384)  =>  256 Gb grande o suficiente...  :-