¿Cómo puedo encontrar la fuente de consultas lentas en Wordpress?

7

Tengo un sitio de WordPress con más de 8000 publicaciones y cada vez que agrego una nueva, el sitio deja de responder. Revisé el registro de consultas lentas de MySQL y descubrí que está realizando una selección que devuelve la mayoría de las filas en la tabla de publicaciones y está tardando mucho en ejecutarse.

Esto es un ejemplo:

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;

¿Cómo puedo encontrar el origen de estas consultas?

holiveira
fuente

Respuestas:

4

Intente usar este plugin http://wordpress.org/extend/plugins/debug-queries/ para verificar el rendimiento de las consultas de su base de datos. Muestra muchos detalles sobre todas y cada una de las consultas realizadas y el tiempo que la consulta necesitó para completar y el tiempo necesario para hacer toda la página.

Sisir
fuente
el complemento también muestra Llamada desde que podría hacerle entender desde dónde se realiza la consulta.
Sisir
2

Lo que puede hacer es realizar una EXPLICACIÓN en la 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;

Esto revelará que el patrón de acceso tomado por MySQL está recopilando los datos que necesita.

Sin embargo, solo mirando las cláusulas WHERE y ORDER BY, me gustaría hacer la siguiente sugerencia: crear un índice que pueda ayudar a acelerar la consulta. Dado que post_status y post_type tienen valores estáticos en la consulta y post_modified presentan un orden de clasificación para esas dos columnas, intente este índice por favor:

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

Darle una oportunidad !!!

RolandoMySQLDBA
fuente
0

Pruebe el siguiente complemento, Interfaz de consulta , que le permitirá mostrar las consultas y le proporcionará una interfaz donde también puede verificar qué está tomando la consulta al verificar sus índices o explicación.

Zeeshan Khan
fuente