La base de datos de MySQL que apoyaba este blog consumía la cantidad masiva de CPU, que llevan con eficacia para localizar yendo abajo de 3-4 veces esta semana. Conocía a un culpable obvio. Sin embargo la realidad diferenció.

Sabía que tenía por algún tiempo una pregunta enorme, que no fue depositada, y que soy probable contribuir a la carga del servidor de MySQL:
cat_ID SELECTO, cat_name COMO categoría, cuenta (*) COMO “cuenta”
De $wpdb->categories, $wpdb->post2cat, $wpdb->posts
DONDE cat_ID = category_id y
¡category_nicename! = “título” e identificación = post_id y
el post_status = “publica”
GRUPO POR el cat_name
TENIENDO cuenta (*) > 10
ORDEN POR la “cuenta” DESC
LÍMITE 0, 10

No podría ver una manera obvia de optimizar esto sin la contenencia de la funcionalidad. ¡En caso de que usted wondeering substituyendo el category_nicename! = el “título” con el cat_ID = 37 no ayuda.

También pensé en usar el registro lento de la pregunta para establecer claramente el problema. No se requirió afortunadamente ningunos de ellos. Conseguí un email de alta ayuda amistosa de la carga de WestHost. Jonny descubrió en varias ocasiones funcionando la “DEMOSTRACIÓN POR COMPLETO PROCESSLIST; ” que el culpable era:

SELECCIONE el cat_ID distinto, cat_name
De st_categories, st_post2cat
ORDEN POR el category_nicename;

Esto me tomó por sorpresa. Tomas de la pregunta del Th dondequiera entre 3-5 segundos. En altas cargas con peticiones simultáneas múltiples que es bastante bueno sobrecargar el servidor. La solución era engañoso simple:

SELECCIONE el cat_ID distinto, cat_name
De st_categories
ORDEN POR el category_nicename;

La pregunta original era redundante y derrochador. Me prepuse originalmente exhibir solamente categorías con uno o más postes en ellos. Al menos en alguna parte abajo de la línea olvidé agregar DONDE cláusula. Todas mis categorías tienen hoy postes. Tan simplemente la eliminación de st_post2cat de de lista es bastante buena derribar el tiempo de ejecución a 0.01 segundos.

Las lecciones para llevar son:

  • Nunca conjeture las preguntas del embotellamiento; encuéntrelo.
  • La herramienta simple como “LISTA DE PROCESO COMPLETA de la DEMOSTRACIÓN” es a menudo tan buena como definitiva, con todo analizar más difícilmente la herramienta como registro lento de la pregunta.
  • Tener buena ayuda de su abastecedor del recibimiento de tela no lastima tampoco