¿Cómo agrego índices a la base de datos de WordPress?

21 may 2012, 20:38:35
Vistas: 17.3K
Votos: 1

Recibí un mensaje de Hostgator sobre la suspensión de mi cuenta debido a la carga que generaba en sus servidores. Esta es la quinta vez que ocurre. Estoy en un servidor compartido.

Me dijeron que podría resolverse simplemente añadiendo nuevos índices a la base de datos u optimizándola con otras técnicas. He estado usando consultas SQL y la opción "optimizar" en phpMyAdmin para optimizar mi base de datos, pero no ha ayudado.

También instalé Super Cache como me recomendaron, pero esto tampoco ha solucionado el problema.

Ahora quiero probar añadiendo índices a la base de datos. ¿Cómo puedo hacer esto? ¿Alguien sabe cómo hacerlo? Es urgente.

Gracias.

1
Comentarios

Para optimizar consultas, primero necesitas saber qué consultas se están ejecutando. Comienza instalando el plugin Debug Bar, cargando una página problemática y luego haciendo clic en el enlace Debug en la parte superior derecha de la barra de administración. También necesitarás agregar define('SAVEQUERIES', true); a tu archivo wp-config.php. Esto te permitirá ver qué consultas están ocurriendo y cuánto tiempo están tardando en ejecutarse.

Otto Otto
22 may 2012 00:11:31
Todas las respuestas a la pregunta 3
7

La base de datos de WordPress ya está indexada. Consulta este artículo del codex para obtener una lista detallada de índices por tabla: http://codex.wordpress.org/Database_Description

E incluso si no lo estuviera, necesitarías saber qué consultas se están ejecutando para agregar índices de manera efectiva. Es decir, no habría una solución rápida: tendrías que aprender cómo funciona la indexación, averiguar qué consultas tienen un rendimiento deficiente y partir de ahí.

Si realmente tienes problemas con consultas lentas, lo más probable es que estén relacionados con un plugin o archivo de tema mal escrito que estés utilizando. Intenta desactivar todos los plugins y cambiar al tema predeterminado para ver cómo afecta el rendimiento. Si tu sitio sigue siendo demasiado exigente para tu hosting compartido (con un tema predeterminado y sin plugins activos), necesitas cambiar de proveedor de hosting.

21 may 2012 22:11:02
Comentarios

Creo que él sabe que ya está indexado, pero no está indexado lo suficientemente bien. Digamos que meta_value no está indexado y casi todos los sitios web con búsqueda personalizada usan búsqueda en esos campos que no están indexados, por lo que es lento. Así que si estás tratando de decir que WP hizo un buen trabajo en eso - no estoy de acuerdo. Claro que no podemos ver qué campos está buscando este tipo, eso nos ayudaría.

Tommixoft Tommixoft
21 may 2012 22:14:06

Por cómo suena su pregunta, no creo que lo sepa. Parece que espera que haya algún tipo de comando "agregar índices" que puedas ejecutar para mejorar el rendimiento, y estoy tratando de explicar que es más complicado que eso. Él necesita entender sus consultas antes de decidir si puede mejorar su rendimiento o no con índices adicionales. No parece que esté en posición de hacer eso, ya que literalmente está preguntando cómo agregar índices, no QUÉ índices agregar o por qué. De todos modos, sí, WordPress está indexado perfectamente bien para una instalación que usa el tema predeterminado sin plugins.

MathSmath MathSmath
21 may 2012 22:56:31

Hola chicos, gracias por las respuestas. Sabía que WordPress ya estaba indexado porque mi host dijo: "Resolver esta situación puede ser tan simple como agregar índices adicionales a tu base de datos, optimizar las consultas utilizadas, o algo igualmente fácil." "Índices adicionales" fue la frase que usaron. De todos modos, en realidad es el post-new.php (para publicaciones) el que causó el problema de alta carga. Cada vez que hago clic en "Añadir nuevo", carga por siempre (con una pantalla en blanco) y luego tengo que cerrar la pestaña e intentar de nuevo hasta que realmente se abre la página. ¿Cómo lo arreglo con más índices? Gracias.

Sosthenes Kwame Boame Sosthenes Kwame Boame
21 may 2012 23:41:04

El sitio tiene un poco más de 8,000 artículos y recibe alrededor de 2000 visitantes al día que ven la página entre 5,000 y 8,000 veces diarias. El tamaño de la base de datos es de aproximadamente 66 MB. Solo comparto esta información por si es relevante.

Sosthenes Kwame Boame Sosthenes Kwame Boame
21 may 2012 23:44:06

@KwameBoame No sabes si PUEDES solucionarlo con más índices. La indexación no es la solución a todos los problemas relacionados con MySQL, y si no sabes cuál es tu problema exacto, no puedes saber si índices adicionales lo resolverán. Puede que no tenga nada que ver con MySQL en absoluto—podría ser un bucle defectuoso en un plugin que hace que una consulta perfectamente buena se ejecute demasiadas veces. Quién sabe. Si tu hosting está seguro de que es un problema con una de tus consultas, pídeles que activen el "registro de consultas lentas" y te proporcionen el registro. Mientras tanto, sugiero nuevamente desactivar todos los plugins para ver si eso resuelve el problema.

MathSmath MathSmath
22 may 2012 01:17:19

@MathSmath gracias por tu sugerencia. Funcionó. El plugin Super Cache era el culpable. Hacía que post-new.php realizara varios cientos de consultas hasta que se agotaba el tiempo de espera. Ahora, tengo que buscar un mejor plugin de caché. Gracias por tu ayuda, amigo.

Sosthenes Kwame Boame Sosthenes Kwame Boame
23 may 2012 10:50:31

@KwameBoame No hay problema. Me alegro de que lo hayas resuelto. ¿Podrías marcar mi respuesta como aceptada? ¡Gracias!

MathSmath MathSmath
23 may 2012 19:30:13
Mostrar los 2 comentarios restantes
2

Parece que te dieron una solución muy general para un problema más específico. WordPress utiliza múltiples tablas para consultar entradas/páginas/etc. No estoy seguro de que realmente debas agregar nuevos índices. Comenzaría por ponerlo en modo mantenimiento y probar tu sitio página por página. Necesitas identificar qué página(s) están ejecutando consultas muy grandes, y detenerlas, paginarlas o modificarlas. Otra posibilidad es que realmente hayas construido un sitio exitoso, y ninguna cantidad de optimizaciones en el mundo te dará más ancho de banda. Puede que necesites desembolsar algo más de dinero y conseguir un servidor dedicado. Si eso no es posible, nuevamente, necesitas minimizar el número de consultas a la base de datos que estás realizando.

21 may 2012 21:18:19
Comentarios

Entendido, y estoy de acuerdo hasta cierto punto. Él todavía debería poder administrar su sitio sin causar una carga en el servidor; pero, de nuevo, literalmente podrías tener demasiadas personas visitando tu sitio (lo cual es algo bueno) y necesitarías actualizar tu plan económico. El indexado de Wordpress es lo suficientemente bueno como para gestionar un sitio bastante grande sin problemas; pero nuevamente, eso depende de los plugins que realizan consultas y del tema. Además, si tienes 100 plugins instalados y activos, eso no va a ayudar. La ruta fácil: actualizar tu alojamiento económico. La ruta difícil: desactivar plugins y optimizar consultas.

Aaron Bell Aaron Bell
21 may 2012 22:23:55

@AaronBell, Hola, por favor revisa mi respuesta anterior (para Tommix y Mathsmath) y verifica si hay alguna manera de solucionar mi sitio. Gracias.

Sosthenes Kwame Boame Sosthenes Kwame Boame
21 may 2012 23:45:47
1

Te recomendaría usar el plugin http://wordpress.org/extend/plugins/wp-super-cache/ si tu sitio web no es muy dinámico y los cambios ocurren, digamos, una vez al día. Este plugin crea archivos estáticos a partir de contenido dinámico, lo que prácticamente elimina las consultas a la base de datos (puedes elegir qué no debe ser cacheado). Hace que el sitio web sea extremadamente rápido. [PERO haz una copia de seguridad antes de instalarlo].

Aquí he tomado una foto de cómo hacer que un campo sea indexado http://s10.postimage.org/wxjn9u2uh/index.jpg PERO - NO TODOS LOS CAMPOS pueden o deben ser indexados. El campo indexado debe tener un tamaño específico. Y la indexación debe hacerse en campos sobre los que frecuentemente realizas consultas.

21 may 2012 21:12:29
Comentarios

El OP menciona que ya probó usar Super Cache y no resolvió el problema.

mrwweb mrwweb
21 may 2012 23:18:13