Como posso encontrar a fonte de consultas lentas no Wordpress?


7

Eu tenho um site WordPress com mais de 8000 postagens e toda vez que adiciono um novo, o site fica sem resposta. Eu verifiquei o log de consultas lentas do MySQL e descobri que ele está executando uma seleção que retorna a maioria das linhas na tabela de postagens e está demorando muito tempo para ser executado.

Isto é 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?

Respostas:


4

Tente usar este plugin http://wordpress.org/extend/plugins/debug-queries/ para verificar o desempenho de suas consultas ao banco de dados. Ele mostra muitos detalhes sobre cada consulta feita e o tempo que a consulta precisava ser concluída e o tempo necessário para criar a página inteira.


o plug-in também mostra Call From que pode fazer você entender de onde a consulta é feita.
Sisir 17/08/11

2

O que você pode querer fazer é executar uma EXPLAIN na consulta como esta:

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 utilizado pelo MySQL está coletando os dados que você precisa.

No entanto, apenas observando as cláusulas WHERE e ORDER BY, gostaria de fazer a seguinte sugestão: crie um índice que possa ajudar a acelerar a consulta. 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);

De uma chance !!!



0

Experimente o seguinte plugin, Query Interface , que permitirá mostrar as consultas e fornecer uma interface na qual você também pode verificar o que a consulta está executando, verificando seus índices ou explicações.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.