Otimizar a base de dados WordPress: limpar o lixo que pesa no site
Quase ninguém culpa a base de dados quando o WordPress arrasta. Culpa-se o alojamento, o tema, o plugin de cache. Mas, ao fim de dois ou três anos, a wp_options cresce para 50 MB, o wp_postmeta está cheio de meta órfãs de plugins desinstalados, e cada carregamento de página puxa milhares de linhas para memória. O site não está lento por causa da web — está lento por causa da casa que carrega às costas.
Este guia mostra o que vale a pena limpar, o que não vale, com que ferramentas, e com que frequência. Sem promessas de "10× mais rápido": expectativa real é TTFB que cai 100-300 ms e backoffice que volta a responder.
1. O problema real não é o tamanho — é o autoload
A wp_options tem uma coluna autoload. Tudo o que está marcado como yes é carregado em todos os pedidos, mesmo no frontend público. Plugins mal-comportados deixam lá megabytes de dados que ninguém precisa.
Verifica o tamanho do autoload com uma query simples (via phpMyAdmin ou Adminer):
SELECT SUM(LENGTH(option_value)) / 1024 / 1024 AS autoload_mb
FROM wp_options WHERE autoload = 'yes';
Valores de referência:
- < 1 MB: saudável.
- 1-3 MB: cinzento, tolerável.
- > 3 MB: está a estrangular o site. Auditar.
Para ver os culpados:
SELECT option_name, LENGTH(option_value) AS bytes
FROM wp_options WHERE autoload = 'yes'
ORDER BY bytes DESC LIMIT 20;
Vais reconhecer lixo de plugins antigos (caches de afiliados, logs de imports, settings de SEO já trocado). Esses entries são candidatos a mudar autoload para no ou apagar.
2. Revisões de posts — limitar, não eliminar
Cada vez que guardas um post no editor, o WordPress cria uma revisão. Por defeito, são ilimitadas. Um post antigo pode ter 80 revisões. Multiplica por mil posts e tens dezenas de milhares de linhas em wp_posts.
Limita no wp-config.php:
define( 'WP_POST_REVISIONS', 5 );
define( 'AUTOSAVE_INTERVAL', 120 );
Mantém 5 revisões por post (suficiente para recuperar um erro recente) e poupa o autosave a cada 2 minutos em vez de 60 segundos. As revisões antigas continuam lá — para apagar, ver §5.
3. Transients — caches que ninguém vai limpar por ti
Os transients são caches temporários (ex.: resultado de uma chamada à API do Instagram que vale 1 hora). Idealmente expiram sozinhos. Na prática, transients com expiração mal definida ficam para sempre na wp_options.
Para detetar:
SELECT COUNT(*) FROM wp_options WHERE option_name LIKE '_transient_%';
Mais de algumas centenas é sinal de plugin a deixar lixo. Limpar transients expirados é seguro — eles são, por definição, descartáveis.
4. Spam, lixeira e meta órfãs
Três fontes silenciosas de bloat:
- Comentários spam e lixeira: o Akismet apanha, mas só marca. Ficam em
wp_comments. Apagar definitivamente a cada 30 dias. - Posts/páginas na lixeira: o WordPress esvazia automaticamente ao fim de 30 dias (configurável com
EMPTY_TRASH_DAYS). Se desativaste isso, está lá tudo. - Postmeta órfã: linhas em
wp_postmetacujopost_idjá não existe. Aparece quando apagas posts diretamente da base de dados sem cascata, ou quando plugins de portfólio/CPT são desinstalados.
Query para detetar postmeta órfã (não executes o DELETE sem backup):
SELECT COUNT(*) FROM wp_postmeta pm
LEFT JOIN wp_posts p ON pm.post_id = p.ID
WHERE p.ID IS NULL;
5. Ferramentas: o que usar, o que evitar
Não precisas de cinco plugins. Um chega.
- WP-Optimize (gratuito): o mais completo para limpeza. Faz revisões, transients, comentários spam, tabelas órfãs, otimização de tabelas (
OPTIMIZE TABLE). Tem agendamento. - Advanced Database Cleaner: especialista em órfãs de plugins desinstalados e tabelas que ficaram a mais.
- WP-CLI (se tens SSH):
wp transient delete --expired,wp post delete $(wp post list --post_status=trash --format=ids). Mais cirúrgico, sem plugin.
Evita plugins que prometem "otimização total da base de dados" + cache + minificação tudo junto. Misturam responsabilidades e quebram o site na hora errada.
6. OPTIMIZE TABLE — vale a pena?
OPTIMIZE TABLE reorganiza fisicamente a tabela e liberta espaço fragmentado. Em InnoDB (o motor por defeito desde há anos), o ganho é marginal e a tabela fica bloqueada durante a operação. Em sites grandes (>500 MB de base de dados) corre o risco de timeout do PHP a meio.
Regra prática:
- Site pequeno (< 100 MB): correr de 3 em 3 meses, à noite, com backup feito.
- Site médio/grande: só depois de limpar bulk grande (ex.: apagaste 100k linhas de revisões). Caso contrário, ignora.
7. Frequência — não é semanal
Limpar a base de dados todos os dias é teatro de produtividade. O bloat constrói-se devagar. Cadência sensata:
| Tarefa | Frequência |
|---|---|
| Spam + lixeira de comentários | Mensal (ou automático) |
| Transients expirados | Mensal |
| Revisões acima do limite | Trimestral |
| Postmeta órfã + tabelas de plugins desinstalados | Semestral |
| Auditoria do autoload | Quando o backoffice começa a arrastar |
Agenda no WP-Optimize ou via WP-CLI cron. Não dependas da memória.
8. Backup obrigatório antes de qualquer DELETE
Não há exceção. Antes de correr qualquer otimização que apague linhas:
- Backup completo da base de dados (
mysqldumpou plugin de backup). - Backup dos ficheiros (
wp-content/). - Guardar fora do servidor (Drive, S3, disco local).
- Testar restauro pelo menos uma vez em ambiente de staging.
Mais sobre estratégia de backup em cópias de segurança do site.
9. Quando otimizar a base de dados não chega
Se o site continua lento depois de limpar:
- Alojamento partilhado saturado — disco lento, MySQL sem memória dedicada.
- PHP desatualizado (< 8.1) — perdes 30-40% de performance só por isso.
- Plugins pesados — page builders pesados, plugins de tradução, multistore. Auditar com Query Monitor.
- Tema mal codificado — temas que fazem 200 queries por página.
Diagnosticar a causa real está em porque é que o teu site está lento e na lista de plugins WordPress essenciais para PME.
10. Riscos — o que não fazer
- Não correr queries DELETE sem WHERE explícito. Apaga a base toda em segundos.
- Não desativar o autoload do
siteurl,home,blognameou outras opções core — o WordPress quebra. - Não apagar tabelas com prefixo de plugin sem confirmar que o plugin está mesmo desinstalado e que não vais reativar.
- Não confiar em "1-click optimize" sem backup. Já vimos sites que voltaram ao estado de instalação fresca.
- Não usar plugins de "speed up" que prometem otimizar a base de dados + servir CDN + minificar JS — escolhe ferramentas com uma responsabilidade.
Em resumo
Uma base de dados WordPress saudável tem autoload < 1 MB, revisões limitadas, transients controlados, e é limpa trimestralmente. O ganho real é TTFB mais consistente e backoffice utilizável — não milagre de performance. Antes de qualquer limpeza: backup, backup e backup. E se o site continua lento depois disto, o problema está noutro lado.
No sitesfixe.pt construímos sites WordPress que carregam depressa desde o primeiro dia — base de dados magra, queries otimizadas, cache em camadas. Se o teu WordPress arrasta e o plugin de cache já não resolve, fala connosco. Sites desde 1.500€. Manutenção desde 80€/mês.
Lê também:
- Porque é que o teu site está lento
- Cópias de segurança do site: como não perder tudo
- Plugins WordPress essenciais para PME
Fontes
Precisas de um site ou loja online?
Agência digital portuguesa. Sites e lojas online rápidos, otimizados para o Google e feitos para resultado.
Pedir orçamento