Cada carregamento de página, envio de formulário, operação de plugin e sessão de usuário no WordPress envolve consultas ao banco de dados. Com o tempo, o banco de dados acumula sobrecarga: revisões de postagens antigas, transientes expirados, metadados órfãos, comentários de spam e tabelas não utilizadas de plugins desativados. Esse inchaço desacelera as consultas, aumenta os tamanhos de backup e degrada o desempenho geral do site. Este guia aborda como identificar o inchaço do banco de dados, limpá-lo com segurança e evitar que retorne.
O que o WordPress Armazena no Banco de Dados
Entender o que vive em seu banco de dados ajuda a identificar o que pode ser removido com segurança. Uma instalação padrão do WordPress usa 12 tabelas principais, e os plugins adicionam suas próprias tabelas conforme necessário.
| Tabela | Armazena | Fonte Comum de Inchaço |
|---|---|---|
| wp_posts | Postagens, páginas, revisões, anexos, tipos de post personalizados | Revisões de postagens, rascunhos automáticos |
| wp_postmeta | Metadados para postagens (campos personalizados, dados de plugins) | Meta órfã de postagens deletadas |
| wp_options | Configurações do site, configurações de plugins, transientes | Transientes expirados, configurações de plugins antigas |
| wp_comments | Comentários e trackbacks | Comentários de spam, comentários excluídos |
| wp_commentmeta | Metadados para comentários | Metadados do Akismet para comentários excluídos |
| wp_usermeta | Metadados de usuários | Tokens de sessão, dados de usuários de plugins |
| wp_termmeta | Metadados para categorias e tags | Metadados de termos órfãos |
Fontes Comuns de Inchaço no Banco de Dados
Revisões de Postagens
O WordPress salva uma revisão toda vez que você clica em "Salvar Rascunho" ou "Atualizar" em uma postagem ou página. Uma postagem editada 50 vezes tem 50 revisões armazenadas na tabela wp_posts, cada uma com seu próprio conjunto de entradas de postmeta. Em um site com centenas de postagens, as revisões podem representar milhares de linhas desnecessárias no banco de dados.
Transientes
Transientes são dados temporários armazenados na tabela wp_options pelo núcleo do WordPress e plugins. Eles têm tempos de expiração, mas o WordPress não exclui automaticamente transientes expirados. Eles se acumulam ao longo do tempo e podem aumentar significativamente a tabela de opções, especialmente em sites com muitos plugins.
Dados Órfãos
Quando você exclui uma postagem, seus metadados (entradas wp_postmeta) podem não ser excluídos. Da mesma forma, excluir comentários, usuários ou termos pode deixar linhas de metadados órfãos. Plugins desativados e excluídos frequentemente deixam suas tabelas de banco de dados para trás, consumindo espaço e poluindo seu banco de dados.
Conteúdo de Spam e Excluído
Comentários de spam, postagens excluídas e comentários excluídos permanecem no banco de dados até serem esvaziados manualmente. Sites com Akismet ou outros filtros de spam podem acumular milhares de comentários de spam que precisam de limpeza periódica.
Rascunhos Automáticos
O WordPress cria postagens de rascunho automático quando você clica em "Adicionar Novo" no editor de postagens, mesmo que você nunca publique. Esses se acumulam ao longo do tempo e não servem para nada após o término da sessão de edição.
Limpeza Manual do Banco de Dados via SQL
Para aqueles que se sentem confortáveis com SQL, você pode limpar diretamente usando phpMyAdmin ou um cliente de banco de dados. Sempre faça backup do seu banco de dados antes de executar consultas de limpeza.
Excluir Revisões de Postagens
-- Excluir todas as revisões de postagens
DELETE FROM wp_posts WHERE post_type = 'revision';
-- Excluir postmeta órfão (metadados para postagens excluídas)
DELETE pm FROM wp_postmeta pm
LEFT JOIN wp_posts p ON pm.post_id = p.ID
WHERE p.ID É NULO;
Limpar Transientes
-- Excluir transientes expirados
DELETE FROM wp_options
WHERE option_name LIKE '%_transient_timeout_%'
AND option_value < UNIX_TIMESTAMP();
-- Excluir os dados dos transientes para transientes expirados
DELETE FROM wp_options
WHERE option_name LIKE '%_transient_%'
AND option_name NOT LIKE '%_transient_timeout_%';
Remover Comentários de Spam e Lixeira
-- Excluir comentários de spam
DELETE FROM wp_comments WHERE comment_approved = 'spam';
-- Excluir comentários na lixeira
DELETE FROM wp_comments WHERE comment_approved = 'trash';
-- Excluir metadados de comentários órfãos
DELETE cm FROM wp_commentmeta cm
LEFT JOIN wp_comments c ON cm.comment_id = c.comment_ID
WHERE c.comment_ID IS NULL;
Limpeza de Banco de Dados Baseada em Plugins
Se você prefere uma abordagem baseada em GUI, vários plugins lidam com a otimização de banco de dados com capacidades de agendamento:
WP-Optimize
WP-Optimize é um plugin gratuito que limpa revisões, rascunhos, spam, transientes e dados órfãos. Ele também otimiza tabelas de banco de dados e suporta limpezas agendadas. A versão Pro adiciona suporte a multisite e agendamento avançado.
Otimização de Banco de Dados WP Rocket
WP Rocket inclui uma aba de Banco de Dados que lida com revisões, auto-rascunhos, posts na lixeira, comentários de spam, transientes e otimização de tabelas. Como o WP Rocket é principalmente um plugin de cache, você obtém limpeza de banco de dados juntamente com otimização de desempenho em uma única ferramenta.
Advanced Database Cleaner
Este plugin vai mais fundo ao detectar tabelas deixadas por plugins desativados e eventos cron órfãos. Ele categoriza tabelas como núcleo do WordPress, criadas por plugins ou desconhecidas, ajudando você a identificar quais tabelas são seguras para remover.
| Plugin | Versão Gratuita | Limpeza Agendada | Detecção de Tabelas |
|---|---|---|---|
| WP-Optimize | Sim | Sim | Básico |
| WP Rocket | Não (Apenas Premium) | Sim | Não |
| Advanced Database Cleaner | Sim | Apenas Pro | Sim (detalhado) |
Otimizações wp-config.php
Previna o inchaço do banco de dados na fonte adicionando estas constantes ao seu arquivo wp-config.php:
Limitar Revisões de Postagens
// Manter apenas 5 revisões por post (recomendado)
define( 'WP_POST_REVISIONS', 5 );
// Desativar revisões completamente (não recomendado para a maioria dos sites)
define( 'WP_POST_REVISIONS', false );
Definir revisões para 5 fornece histórico suficiente para recuperar de erros enquanto previne o crescimento ilimitado de revisões. Para sites com muito conteúdo e edições frequentes, 10 revisões é uma alternativa razoável.
Esvaziar Lixeira Automaticamente
// Esvaziar a lixeira a cada 7 dias (o padrão é 30)
define( 'EMPTY_TRASH_DAYS', 7 );
// Desativar a lixeira (itens excluídos imediatamente - use com cautela)
define( 'EMPTY_TRASH_DAYS', 0 );
Intervalo de Salvamento Automático
// Aumentar o intervalo de salvamento automático para 5 minutos (o padrão é 60 segundos)
define( 'AUTOSAVE_INTERVAL', 300 );
Otimização de Tabelas de Banco de Dados
Após excluir linhas, execute uma operação de OTIMIZAÇÃO para recuperar espaço fragmentado:
OPTIMIZE TABLE wp_posts, wp_postmeta, wp_options, wp_comments, wp_commentmeta;
Agende isso mensalmente ou após grandes operações de limpeza. A maioria dos plugins de limpeza inclui otimização de tabelas em suas tarefas agendadas.
Agendando Limpeza Automática
Configure horários automatizados: limpeza semanal de transientes e spam, remoção mensal de revisões e otimização de tabelas, e auditorias trimestrais de tabelas de plugins órfãos. WP-Optimize e WP Rocket suportam limpeza agendada. Configure-os durante horários de menor movimento.
Monitorando o Tamanho do Banco de Dados
Acompanhe o tamanho do seu banco de dados para detectar inchaço cedo. Execute esta consulta para ver os tamanhos das tabelas individuais:
SELECT table_name AS 'Tabela',
ROUND(data_length / 1024 / 1024, 2) AS 'Dados (MB)',
table_rows AS 'Linhas'
FROM information_schema.tables
WHERE table_schema = 'seu_nome_de_banco_de_dados'
ORDER BY (data_length + index_length) DESC
LIMIT 20;
Se wp_options exceder 5 MB ou wp_postmeta crescer além de 100 MB, é hora de uma limpeza. Essas tabelas são consultadas com frequência, então seu tamanho afeta diretamente os tempos de carregamento da página.
Para uma abordagem abrangente de otimização de desempenho que inclua otimização de banco de dados juntamente com cache, otimização de imagens e configuração de servidor, leia nosso guia de otimização de velocidade do WordPress. Para manter a saúde do banco de dados como parte da sua rotina de manutenção, veja nosso guia de manutenção do WordPress.
Para mais detalhes, consulte a documentação oficial: API do Banco de Dados do WordPress.
Perguntas Frequentes
É seguro excluir revisões de postagens do banco de dados?
Sim, excluir revisões de postagens é seguro e não afeta seu conteúdo publicado. As revisões são instantâneas históricas das alterações do rascunho. Uma vez que seu conteúdo está finalizado, as revisões não servem para a maioria dos sites. No entanto, sempre faça backup do seu banco de dados antes de realizar qualquer limpeza.
A otimização do banco de dados melhorará a velocidade do meu site de forma notável?
A melhoria depende de quão inchado está o seu banco de dados. Sites com mais de 50.000 linhas órfãs ou uma tabela wp_options que excede 10 MB verão melhorias notáveis nos tempos de carregamento das páginas e na responsividade do painel administrativo. Sites menores podem ver ganhos marginais. A otimização do banco de dados funciona juntamente com o cache e outras medidas de desempenho para uma melhoria cumulativa.
Com que frequência devo otimizar meu banco de dados WordPress?
Para sites ativos com atualizações regulares de conteúdo, a otimização mensal é uma boa referência. Sites com alto tráfego, com comentários frequentes, transações do WooCommerce ou envios de formulários podem se beneficiar de limpeza semanal de transientes e spam, juntamente com otimização mensal de tabelas.
Plugins de limpeza de banco de dados podem quebrar meu site?
Plugins respeitáveis como WP-Optimize e WP Rocket são projetados para serem seguros. Eles visam categorias de inchaço conhecidas (revisões, transientes, spam) e não tocam em dados essenciais. O risco aumenta ao excluir manualmente tabelas específicas de plugins. Se não tiver certeza se uma tabela é necessária, mantenha-a e pesquise seu propósito primeiro.
Qual é a diferença entre OPTIMIZE TABLE e excluir linhas?
Excluir linhas remove dados da tabela. OPTIMIZE TABLE reorganiza o armazenamento físico da tabela após as linhas terem sido excluídas, recuperando espaço em disco e desfragmentando o arquivo de dados. Pense nisso como excluir arquivos (remover linhas) versus desfragmentar seu disco rígido (otimizar a tabela).
Devo usar InnoDB ou MyISAM para tabelas do WordPress?
O WordPress usa InnoDB por padrão desde a versão 5.5, e é o mecanismo de armazenamento recomendado. InnoDB suporta bloqueio em nível de linha (melhor para usuários simultâneos), transações e recuperação de falhas. MyISAM é mais rápido para operações de leitura intensiva, mas carece desses recursos de confiabilidade. Se você encontrar tabelas MyISAM em seu banco de dados, geralmente é recomendado convertê-las para InnoDB.
Como posso identificar tabelas deixadas por plugins desativados?
O plugin Advanced Database Cleaner pode detectar e categorizar tabelas não essenciais. Alternativamente, execute a consulta SQL SHOW TABLES e compare os nomes das tabelas com as tabelas principais do WordPress e seus plugins atualmente ativos. Tabelas com prefixos correspondentes a plugins desativados são candidatas à remoção.
O WooCommerce adiciona um inchaço significativo ao banco de dados?
Sim. O WooCommerce armazena dados de pedidos, metadados de produtos, sessões de clientes e transientes que crescem substancialmente em lojas ativas. Use WooCommerce > Status > Ferramentas para limpar transientes e sessões expirados regularmente.
Otimize o Desempenho de Todos os Ângulos
O WP Rocket gerencia cache, limpeza de banco de dados e otimização de desempenho em um único plugin, para que você possa manter seu site funcionando sem problemas.
Explore o WP Rocket →


