Como posso encontrar a origem de consultas lentas no Wordpress?

8

Eu tenho um site WordPress com mais de 8000 posts e toda vez que eu adiciono um novo site o site não responde. Verifiquei o log de consultas lentas do MySQL e descobri que ele está executando um select que retorna a maioria das linhas na tabela de posts e está demorando muito para ser executado.

Este é um exemplo:

Query_time: 149.702704  
Lock_time: 0.000078  
Rows_sent: 4699  
Rows_examined: 9398  
Rows_affected: 0  
Rows_read: 4699
use 488726_wp;

SELECT 'ID', 'post_author', 'post_date', 'post_date_gmt', 'post_status', 'post_name', 'post_modified', 'post_modified_gmt', 'post_parent', 'post_type'
    FROM 'wp_posts' 
        WHERE ( (post_status = 'publish' AND (post_type = 'post' OR post_type = ''))  
            OR  (post_status = 'publish' AND post_type = 'page') )  
        AND post_password='' 
        ORDER BY post_modified DESC;

Como posso encontrar a fonte dessas consultas?

    
por holiveira 17.08.2011 / 19:49

4 respostas

4

Tente usar este plugin enlace para verificar o desempenho de suas consultas ao banco de dados. Ele mostra muitas informações sobre cada consulta feita e tempo que a consulta precisa ser concluída e o tempo necessário para criar a página inteira.

    
por Sisir 17.08.2011 / 20:53
2

O que você pode querer fazer é executar um EXPLAIN na consulta assim:

EXPLAIN SELECT ID, post_author, post_date,
post_date_gmt, post_status, post_name,
post_modified, post_modified_gmt, post_parent,
post_type FROM wp_posts
WHERE ( (post_status = 'publish' AND (post_type = 'post' OR post_type = ''))
OR (post_status = 'publish' AND post_type = 'page') )
AND post_password='' ORDER BY post_modified DESC;

Isso revelará que o padrão de acesso do MySQL é coletar os dados de que você precisa.

No entanto, apenas olhando para as cláusulas WHERE e ORDER BY, eu gostaria de fazer a seguinte sugestão: criar um índice que ajude a consulta a acelerar. Como post_status e post_type têm valores estáticos na consulta e post_modified apresentam uma ordem de classificação para essas duas colunas, tente este índice, por favor:

ALTER TABLE wp_posts ADD INDEX (post_status,post_type,post_modified);

Experimente!

    
por RolandoMySQLDBA 17.08.2011 / 20:13
1

Esse problema está relacionado ao plug-in Google XML Sitemaps; enlace

Você pode usar a opção "Ativar construção manual de sitemap via solicitação GET". E acione o progresso da geração manualmente.

    
por Hüseyin Berberoğlu 02.10.2013 / 20:46
0

Experimente o seguinte plug-in, a Interface de consulta , que permite exibir as consultas e fornecer uma interface onde você também pode verificar o que a consulta está fazendo, verificando seus índices ou explicações.

    
por Zeeshan Khan 08.06.2014 / 07:37