Esta página foi traduzida por máquina. Leia o original em inglês. English

Biblioteca IBSurgeon

Boletim de Desempenho do Firebird: Edição 1

Decidimos lançar um boletim informativo mais ou menos regular sobre “Desempenho do Firebird”, dedicado a testes de desempenho, dicas, truques, melhorias de configuração, etc.

Na primeira edição, temos o seguinte:

Firebird 4 vs Firebird 3: Boas Notícias, Pessoal!

Desde 2019, quando publicamos a primeira coleção de resultados do teste simples INSERT/UPDATE/DELETE, muitas pessoas nos enviaram resultados de seus servidores Firebird, e nós os adicionamos à planilha e ao gráfico apropriado.

O teste é uma ferramenta simples, mas poderosa, para medir e comparar o desempenho de diferentes configurações de hardware + Firebird, permitindo confirmar ou refutar rapidamente um problema de hardware ou configuração.

Recentemente, usamos este teste para comparar o desempenho de INSERT/UPDATE/DELETE do Firebird 4.0 (versão 4.0.0.2394, algumas builds antes do lançamento) e 3.0 (versão 3.0.8.33426, snapshot, pré-lançamento do próximo 3.0.8, que é estável como uma versão menor, de acordo com os auto-testes do Firebird).

O ambiente de teste foi Intel i3-10100F 3.60GHz com SSD Samsung SSD 870QVO e unidade RAM (qSoft), com vários tamanhos de RAM (16, 32, 64) e Page Buffers.

Abaixo está o gráfico, e aqui está a planilha XLS com os resultados.

Como você pode ver, nas mesmas condições e com a mesma configuração, o Firebird 4 é aproximadamente 10% mais rápido que o 3.0.8 em operações de escrita. Isso é definitivamente uma boa notícia e mais um sinal de que é hora de dar uma olhada mais de perto no próximo lançamento e começar os preparativos para a migração.

Claro, a melhor abordagem será executar o mesmo teste em seu próprio servidor e ver a melhoria real por si mesmo.

Veja como fazer »

Escolhendo a melhor instância AWS EC2 para o máximo desempenho de escrita do Firebird

Cada vez mais empresas pensam em “migrar para a nuvem”, e o Amazon Web Service Elastic Cloud é um dos “destinos de nuvem” favoritos.

No entanto, a AWS oferece muitos tipos diferentes de instâncias. Como escolher a melhor? Claro, fazendo os testes!

Fizemos os testes simples de INSERT/UPDATE/DELETE para 20 tipos de instâncias e encontramos várias opções realmente boas para o Firebird.

Observe - todos os preços nos cálculos e gráficos abaixo são para a região de Frankfurt da AWS EC2, eles são retirados como estão de aws.amazon.com, sem quaisquer descontos, podem estar sujeitos a impostos adicionais e podem mudar ao longo do tempo - portanto, não considere os preços abaixo como finais ou como um guia de compra exato.

Aqui está o gráfico geral e a planilha XLS com os resultados:

Para simplificar, criamos a coluna Operações, que essencialmente é a soma de Inserts + Updates + Deletes, e a usamos como a métrica unificada de desempenho de escrita:

Como você pode ver, os seguintes 3 tipos de instâncias são líderes em desempenho (do ponto de vista das operações de escrita do Firebird):

Instância Custo por hora para Linux Operações/por segundo

| z1d.xlarge | USD$0,45 | 45834 | | m5dn.2xlarge | USD$0,648 | 45198 | | m5d.2xlarge | USD$0,544 | 44150 |

É interessante que os líderes não são os tipos de instâncias mais caros! Claro, precisamos ter em mente que o teste é single-threaded (e não se beneficia do número de núcleos) e não requer uma grande quantidade de RAM (porque o banco de dados tem apenas 3,6 GB), mas para aplicações que precisam processar rapidamente picos de operações de escrita, essas instâncias parecem realmente ideais.

Apesar do fato de que esses tipos de instâncias não são os mais caros (entre os testados), eles ainda são caros o suficiente para pensar duas vezes sobre o orçamento, e como uma das vantagens anunciadas da nuvem é a flexibilidade, faz sentido começar com tipos de instâncias de VM mais baratos, que podem ser bons o suficiente para servir nosso banco de dados Firebird, certo?

Para descobrir os tipos de instâncias com melhor custo/desempenho, criamos outra coluna em nossa planilha: “Operações por 1 USD”.

Isso significa exatamente o que parece - quantas operações de escrita você pode comprar por 1 USD.

A fórmula é a seguinte

Operações_Por_Segundo * 3600 segundos por hora / Preço por Hora

Como você pode ver, deste ponto de vista, os líderes são diferentes:

Instância Preço por hora Linux Operações por 1 USD Operações por segundo
c5d.xlarge USD$0,222 579062087 35709
c5ad.xlarge USD$0,2 565024995 31390
m5dn.xlarge USD$0,324 446037216 40143

O muito interessante é o #3, m5dn.xlarge com desempenho de pico ~40K/por segundo - está bem próximo do líder de desempenho z1d.xlarge com 45834 operações/segundo, mas significativamente mais barato.

Em geral, nossa experiência com AWS EC2 mostra que é um ambiente estável e maduro, com muitos bons recursos de segurança/backup/alta disponibilidade/etc., mas, como qualquer plataforma complexa, requer experiência (ou conhecimento externo) para fazer a escolha adequada e não pagar contas exorbitantes por aplicações com carga não fantástica.

Resultados recentes do teste INSERT/UPDATE/DELETE

Então, como você pode ver, o teste simples pode ser útil não apenas como uma comparação entre hardware e Firebirds, mas também pode economizar alguns dólares.

Publicamos um gráfico com resultados coletados recentemente e uma planilha XLS para brincar com ela, para que você possa verificar por si mesmo aqui.

Abaixo estão 3 conclusões óbvias:

  1. Os drives NVME realmente arrasam, então se você precisa de um servidor Firebird poderoso, compre NVME para bancos de dados.
  2. A alta frequência da CPU é muito importante para o alto desempenho de bancos de dados Firebird. Muitas vezes, os fornecedores o incentivam a comprar processadores multi-core com frequência mais baixa (<3GHz), mas essa pode não ser a melhor opção para o Firebird, e menos núcleos com frequência mais alta podem dar um resultado melhor.
  3. Se o perfil de carga do seu banco de dados é fortemente orientado a escrita, tente reduzir os Page Buffers: faça experimentos com DefaultDbCachePages como 50K, 100K, 250K, etc. Seria legal se você compartilhasse os resultados conosco!

Sinta-se à vontade para investigar os resultados dos testes e fazer qualquer pergunta ou enviar sugestões.

Nas próximas edições do “Firebird Performance Newsletter”

Na 2ª edição, mostraremos como configurar várias instâncias SuperClassic para servir um banco de dados (entre outras coisas, pode ser útil para dividir a carga entre várias portas de rede). Os planos para as próximas edições são grandes: erros de configuração, testes de bancos de dados criptografados, comparação avançada do desempenho do Firebird 4 com o Firebird 3, otimização de índices, etc.

Se você está interessado e gostaria de receber notificações sobre novas edições, junte-se a nós no Canal Telegram FirebirdSQL.

Fale conosco

Entre em contato conosco com quaisquer perguntas e sugestões: Alexey Kovyazin: [email protected].