Otimização de base de dados WordPress: limpeza, manutenção e performance

Uma base de dados WordPress limpa e bem mantida é o fundamento de um site rápido. Com o tempo, a BD acumula dados desnecessários — revisões de posts, transients expirados, sessões antigas do WooCommerce, metadados órfãos — que aumentam o seu tamanho, tornam as queries mais lentas, e os backups mais pesados. Este guia cobre o que limpar e como automatizar.

O que acumula na base de dados WordPress

Revisões de posts

Cada vez que um post ou página é guardado, o WordPress cria uma revisão. Um post editado 50 vezes tem 50 revisões armazenadas. Em sites com muito conteúdo e muitas edições, as revisões podem representar 30-50% do tamanho total da tabela wp_posts.

Limitar o número de revisões guardadas adicionando ao wp-config.php:

define('WP_POST_REVISIONS', 5); // Guarda apenas as últimas 5 revisões

Posts no lixo e spam

Posts eliminados e comentários marcados como spam ficam no "lixo" até serem apagados permanentemente. Por defeito, o WordPress apaga automaticamente após 30 dias, mas em sites com muito tráfego isto pode representar muito dados temporários.

Transients expirados

Transients são dados temporários em cache armazenados na wp_options. Quando expiram, ficam na base de dados até serem substituídos ou limpos. Em sites com muitos plugins, a tabela wp_options pode crescer significativamente com transients órfãos.

Metadados órfãos

Quando posts são eliminados, os metadados associados (wp_postmeta) podem ficar na base de dados sem referência. O mesmo acontece com dados de plugins desinstalados.

Sessões WooCommerce

A tabela wp_woocommerce_sessions acumula uma sessão por visita à loja. Em lojas com tráfego, pode crescer para centenas de milhares de registos em semanas, tornando-se uma das maiores e mais lentas tabelas.

Como verificar o tamanho das tabelas

Via phpMyAdmin ou via WP-CLI:

wp db query "SELECT table_name, ROUND(((data_length + index_length) / 1024 / 1024), 2) AS 'size_mb' FROM information_schema.tables WHERE table_schema = DATABASE() ORDER BY (data_length + index_length) DESC LIMIT 20;"

Esta query mostra as 20 maiores tabelas em MB — útil para identificar onde estão os problemas.

Limpeza manual com WP-CLI

# Apagar revisões de posts
wp post delete $(wp post list --post_type='revision' --format=ids) --force

# Limpar transients expirados
wp transient delete --expired

# Limpar sessões WooCommerce antigas (mais de 30 dias)
wp db query "DELETE FROM wp_woocommerce_sessions WHERE session_expiry < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY))"

# Optimizar tabelas após limpeza
wp db optimize

Plugins de limpeza automática

WP-Optimize

O plugin mais completo para limpeza e optimização de base de dados. Interface clara, opções granulares sobre o que limpar, e suporte a agendamento automático. Versão gratuita cobre a maioria das necessidades; versão premium adiciona limpeza de imagens e minificação.

Advanced Database Cleaner

Focado na detecção e remoção de dados órfãos — especialmente útil após desinstalar plugins que deixam tabelas ou opções na base de dados.

Quando optimizar a base de dados

  • Mensalmente, como parte da manutenção regular
  • Antes de fazer backup — reduz o tamanho do backup
  • Após migração — a migração pode deixar dados fragmentados
  • Quando o site começa a ficar lento sem causa óbvia de hosting ou plugins

Atenção: fazer sempre backup da base de dados antes de qualquer operação de limpeza. Algumas operações de limpeza são irreversíveis.

Base de dados dos sites dos seus clientes a precisar de manutenção?

O nosso serviço de manutenção WordPress inclui optimização mensal de base de dados como parte do pacote standard.

Optimizar base de dados WordPress