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?
mysql
performance
holiveira
fuente
fuente
Lo que puede hacer es realizar una EXPLICACIÓN en la consulta como esta:
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:
Darle una oportunidad !!!
fuente
Este problema está relacionado con el complemento Google XML Sitemaps; http://wordpress.org/support/topic/plugin-google-xml-sitemaps-performance-issues-on-large-wp_posts-tables
Puede usar la opción "Habilitar la creación manual del mapa del sitio mediante la solicitud GET". Y desencadenar el progreso de la generación manualmente.
fuente
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.
fuente