“Você sabia que um banco de dados mal configurado é a principal causa de TTFB (Time to First Byte) alto em sites WordPress? Otimizar o my.cnf não só baixa o Load do seu servidor, como ajuda diretamente no SEO dos sites hospedados, fazendo o Google ranquear melhor o conteúdo dos seus clientes.”
Otimizar MariaDB. A configuração padrão do MariaDB é feita para funcionar em qualquer torradeira, não para performar no seu servidor dedicado ou VPS de produção. Se o seu site WordPress está lento ou o servidor está com Load alto devido ao MySQL, geralmente o problema não é falta de hardware, mas um my.cnf mal configurado.
Aqui está o que você precisa ajustar agora.
⚠️ Passo 0: A Regra de Ouro do SysAdmin
Antes de tocar em qualquer coisa:
cp /etc/my.cnf /etc/my.cnf.bak.$(date +%F)Se o MariaDB não subir, você tem um backup instantâneo.
1. O Coração: innodb_buffer_pool_size
Esta é a variável mais importante de todas. O MariaDB usa o buffer pool para manter dados e índices em cache na memória RAM, evitando leitura em disco (I/O).
- Servidor Dedicado apenas para Banco: Configure entre 70% a 80% da RAM total.
- Servidor Web Compartilhado (cPanel/DirectAdmin): O banco concorre com o Apache/Nginx/PHP. Configure entre 50% a 60% da RAM total.
Exemplo (Para um servidor de 16GB com web + banco):
[mysqld]
innodb_buffer_pool_size = 8GDica: Se o valor for muito alto em um VPS pequeno, o OOM Killer do Linux vai matar o MariaDB.
2. A Performance de Escrita: innodb_log_file_size
Isso controla o tamanho dos logs de “redo” (transações). Um valor muito baixo faz o MariaDB escrever no disco com muita frequência (checkpoints), matando a performance de escrita.
- Recomendação: 25% do tamanho do seu
innodb_buffer_pool_size, mas geralmente 512M a 2G é suficiente para a maioria das cargas de trabalho web.
innodb_log_file_size = 512M3. A Armadilha do Cache: query_cache_type
Desative isso. Em versões modernas do MariaDB e em ambientes com muitas escritas (como WordPress ou E-commerce), o Query Cache tradicional se torna um gargalo devido ao bloqueio global (global lock) que ele exige a cada atualização de tabela.
query_cache_type = 0
query_cache_size = 0Nota: Confie no cache do InnoDB (Buffer Pool) e em caches de aplicação como Redis/Object Cache.
4. Conexões e Temporários
Dois ajustes finos para evitar erros de “Too many connections” e uso excessivo de disco para tabelas temporárias.
max_connections: Não chute “10000”. Cada conexão consome RAM. Para um servidor médio, 150 a 300 é o suficiente.tmp_table_sizeemax_heap_table_size: Devem ter o mesmo valor. Isso define o tamanho máximo de uma tabela temporária em memória antes de ser jogada para o disco (o que é lento).
max_connections = 200
tmp_table_size = 64M
max_heap_table_size = 64MResumo do my.cnf (Copy & Paste)
Ajuste o Buffer Pool conforme sua RAM.
[mysqld]
# --- InnoDB Performance ---
# Ajuste para 50-60% da RAM (Servidor Web) ou 80% (Banco Dedicado)
innodb_buffer_pool_size = 4G
innodb_log_file_size = 512M
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 2 # Mais performance, risco mínimo de perda em crash total
# --- Conexões e Limites ---
max_connections = 200
max_allowed_packet = 64M
open_files_limit = 65535
# --- Cache e Temporários ---
# Desativando Query Cache (Obsoleto/Gargalo)
query_cache_type = 0
query_cache_size = 0
# Tabelas Temporárias
tmp_table_size = 64M
max_heap_table_size = 64M
# --- Otimizações Gerais ---
thread_cache_size = 50
table_open_cache = 4000Passo Final: Aplicar e Monitorar
Reinicie o serviço e acompanhe o log de erros para garantir que tudo subiu corretamente:
systemctl restart mariadb
tail -f /var/log/mysqld.log # ou /var/log/messagesQuer ir além dos 5 minutos? Use o MySQLTuner
Depois que o servidor estiver rodando por pelo menos 24 horas com essas configurações, rode o script perl MySQLTuner. Ele vai analisar o uso real e sugerir ajustes finos baseados no tráfego que o seu servidor recebeu.
wget http://mysqltuner.pl/ -O mysqltuner.pl
perl mysqltuner.plDica Pro (SEO & Performance)
Um banco lento aumenta o TTFB (Time to First Byte). O Google odeia TTFB alto. Otimizar o innodb_buffer_pool_size é frequentemente a maneira mais rápida de baixar o TTFB de 1.5s para 200ms em sites dinâmicos.
FAQ
Na maioria das distribuições Linux (CentOS, AlmaLinux, Ubuntu), o arquivo principal de configuração do MariaDB está localizado em /etc/my.cnf ou dentro do diretório /etc/mysql/. Sempre faça um backup antes de editar.
Em um servidor dedicado apenas para banco de dados, recomenda-se alocar entre 70% a 80% da memória RAM total. Se o servidor for compartilhado (Web + Banco, como cPanel ou DirectAdmin), utilize entre 50% a 60% da RAM para evitar falta de memória para o Apache/Nginx.
Sim. A maioria das alterações no arquivo my.cnf, especialmente as relacionadas ao tamanho de buffers e memória (como o innodb_buffer_pool_size), exige um reinício do serviço (systemctl restart mariadb) para entrar em vigor.
O MySQLTuner é um script de leitura segura que não altera configurações sozinho; ele apenas sugere mudanças. É uma ferramenta excelente para diagnóstico, mas deve ser rodada após o banco estar ativo por pelo menos 24 horas para gerar dados confiáveis.
Veja Mais:
Guia completo para otimização de perfomance do mariadb
Como Instalar Openlitespeed no Ubuntu 20.04
Como Usar htop, iotop e Glances para Diagnóstico Rápido de Servidores Linux

