¿Por qué la tabla 'wp_options' no tiene un índice en 'autoload'?

14

Al comienzo de cada página servida por WordPress, hay una llamada a MySQL para buscar opciones:

SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes';

Como no hay índice en la columna autoload , MySQL tiene que buscar TODAS las filas.

También encontré el comentario de esta respuesta diciendo que no habría una mejora de rendimiento incluso si hubiera un índice.

En mi aplicación, usé muchos valores transitorios para servir como un reemplazo de sesión. Funcionaron muy bien y tengo mis propias rutinas de recolección de basura. Noté que en la tabla wp_options , todos mis valores transitorios (los que comienzan con _transient_ ) tienen autoload=no . Espero que la cantidad de filas de mi tabla wp_options aumente a medida que aumente la cantidad de usuarios simultáneos.

Me gustaría saber por qué la mesa está diseñada de esta manera. ¿Y debo crear un índice para mi caso particular?

    
pregunta He Shiming 04.05.2013 - 10:40

2 respuestas

11

No hay índice porque su necesidad nunca fue lo suficientemente fuerte.

en ticket # 14258 se sugirió, pero como la mayoría de las opciones usan autoload=yes por defecto, el índice sería ignorado de todos modos.

También hay un ticket aún abierto # 24044 _Agregar índice a wp_options para ayudar / mejorar el rendimiento_ .

Creo que deberías crear un índice. Sobrevivirá a las mejoras. Puede que no ayude a su rendimiento, pero podría agregar datos estadísticos reales a ese ticket.

    
respondido por el fuxia 04.05.2013 - 11:56
4

Estoy ejecutando 3 blogs de WP en una instancia grande de Debian Squeeze y estaba investigando por qué mysql estaba bloqueado en ese host al 200% de uso de CPU y la carga del sistema entre 3 y 6. Al ver una 'lista de proceso de show' dentro de mysql, comprendimos que la tabla wp_option estaba involucrada en este problema, así que ejecutamos:

alter table wp_options add index autoload_idx('autoload');

Después de esta operación, mysql load, como se muestra en la parte superior, cayó drásticamente al 1% y el promedio de carga de la instancia ahora es 0.10.

Estamos utilizando algunos complementos, por lo que podría haber un bucle en alguna parte del código, y esto podría ser una situación particular, pero en nuestro caso, el cambio en el rendimiento es absolutamente sorprendente.

Nuestra tabla wp_options tiene 347 filas.

    
respondido por el Fabio Pedrazzoli 16.12.2013 - 15:53

Lea otras preguntas en las etiquetas