Como otimizar o wp_options para reduzir queries lentas no WordPress
O que é otimizar wp options para queries lentas no WordPress?
Otimizar wp options no WordPress significa enxugar a tabela wp_options, que guarda as configurações do site, para ela parar de gerar queries lentas. A cada requisição, o WordPress carrega de uma vez todas as linhas marcadas com autoload igual a yes, montando o cache de opções. Quando essa fatia de autoload cresce demais (por transients que não expiram, dados de plugins removidos ou opções enormes), o banco devolve megabytes em toda página, o TTFB sobe e o site inteiro fica lento, mesmo com cache de página. A correção é reduzir o que é carregado em autoload e limpar o lixo acumulado.
Como identificar
- O Query Monitor aponta a query de autoload do wp_options entre as mais lentas e pesadas de cada página.
- O total de dados em autoload passa de 1 MB ao consultar a soma da coluna no banco.
- O TTFB fica alto em todas as páginas mesmo com cache de objetos e de página ativos.
- A tabela wp_options tem milhares de linhas, muitas com nomes de plugins que você já desinstalou.
Como prevenir
- Monitore o tamanho do autoload com regularidade e aja quando passar de 1 MB
- Prefira plugins que removem suas próprias opções ao serem desinstalados e limpe o resto manualmente
- Mantenha um cache de objetos persistente (Redis ou Memcached) para servir o autoload da memória
Causa
- Transients órfãos acumulados que não expiram e permanecem marcados como autoload na tabela.
- Opções com autoload igual a yes guardando dados enormes (logs, caches serializados) carregados em toda página.
- Lixo deixado por plugins e temas desinstalados que nunca removeram suas próprias opções.
- Plugins que gravam dados de sessão ou de fila no wp_options em vez de uma tabela própria.
- Ausência de cache de objetos persistente (Redis ou Memcached), forçando o banco a montar o autoload a cada requisição.
Como resolver
- Meça o tamanho do autoload: antes de mexer, faça backup do banco e meça quanto a tabela carrega em autoload. Um valor acima de 1 MB já justifica a limpeza e indica o quanto pesa em cada requisição.
- Identifique as maiores opções em autoload: liste as opções com autoload yes ordenadas por tamanho. As poucas linhas gigantes no topo costumam ser a causa real, não as milhares de linhas pequenas.
- Limpe os transients órfãos: remova os transients expirados e órfãos da tabela. Eles inflam o autoload sem necessidade e voltam a ser gerados pelo WordPress quando realmente forem precisos.
- Desligue o autoload das opções pesadas: para opções grandes que não são usadas em toda página, mude o autoload de yes para no. Assim elas só são lidas quando o código pede, e não a cada requisição.
- Ative um cache de objetos persistente: configure Redis ou Memcached como cache de objetos. Com ele, o autoload é montado uma vez e servido da memória, em vez de bater no banco a cada visita.
- Remova o lixo de plugins antigos: apague as opções deixadas por plugins e temas que você não usa mais, identificando-as pelo prefixo do nome, sempre com backup feito antes.
-- 1) Quanto a tabela carrega em autoload a cada requisicao (em bytes):
SELECT SUM(LENGTH(option_value)) AS autoload_bytes
FROM wp_options
WHERE autoload = 'yes';
-- 2) As 20 maiores opcoes carregadas em autoload (o verdadeiro peso):
SELECT option_name, LENGTH(option_value) AS bytes
FROM wp_options
WHERE autoload = 'yes'
ORDER BY bytes DESC
LIMIT 20;
-- 3) Desligar o autoload de UMA opcao pesada e pouco usada
-- (troque pelo option_name real visto no passo 2):
UPDATE wp_options
SET autoload = 'no'
WHERE option_name = 'nome_da_opcao_pesada';
-- 4) Remover transients expirados que incham o autoload:
DELETE FROM wp_options
WHERE option_name LIKE '_transient_%'
OR option_name LIKE '_site_transient_%';














