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?
mysql
performance
holiveira
fonte
fonte
O que você pode querer fazer é executar uma EXPLAIN na consulta como esta:
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:
De uma chance !!!
fonte
Esse problema está relacionado ao plugin Google XML Sitemaps; http://wordpress.org/support/topic/plugin-google-xml-sitemaps-performance-issues-on-large-wp_posts-tables
Você pode usar a opção "Ativar criação manual de sitemap via solicitação GET". E acionar o progresso da geração manualmente.
fonte
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.
fonte