¿Cuál es una buena estrategia para planificar el crecimiento de la base de datos de WordPress?

9

Con la esperanza de recibir comentarios sobre el tema de la optimización y el mantenimiento del rendimiento a medida que crece la base de datos de WordPress ... para pintar una imagen ... digamos que tiene un sitio de WordPress / Buddypress MU que comienza alrededor de 150kb ( instalación de la vainilla) ... con el tiempo, los usuarios agregan blogs, foros, publicaciones y comentarios, y la base de datos crece hasta 5 mb ... luego 10 mb el próximo año ... Suponiendo también que los controles de alojamiento son una configuración colocada estándar como Cpanel o Plesk.

  • ¿En qué momento la cantidad de entradas en la base de datos afecta el rendimiento del sitio web de front-end?
  • ¿Qué puedes hacer como administrador de sitios web para que esto funcione sin problemas a medida que crece tu base de datos?
  • ¿Qué puede esperar en términos de rendimiento después del quinto año cuando su base de datos tenga una capacidad de 500 a 600 mb?

Gracias por cualquier comentario que pueda tener para mantener una nave cerrada.

Saludos,

S.

    
pregunta Simon 29.05.2012 - 17:55

3 respuestas

4

Sus preguntas específicas:

1) No hay un límite estricto para el "número de entradas" que un DB puede contener antes de que el rendimiento se vea afectado. El rendimiento depende tanto de su hardware y configuración como del tamaño y estructura de la base de datos.

2) Si está preocupado por la escalabilidad de su capa de base de datos, puede ejecutarla en un clúster, o en un cuadro en la nube o VPS que permita cambiar el tamaño. Si su base de datos comienza a volverse lenta, puede aumentar su tamaño (aunque generalmente con un costo adicional). Estas opciones agregan costos, pero son realmente la mejor manera de asegurar la escalabilidad de una base de datos.

3) Esto realmente depende de la configuración de su alojamiento y de la arquitectura de su base de datos. Pero en general (a menos que esté en un realmente cuadro barato), no me preocuparía por una base de datos de WordPress de 30MB. WordPress hace un buen trabajo de indexación de tablas, e incluso una configuración MySQL de OOB debería manejar fácilmente las consultas de WordPress en una base de datos de este tamaño. Cuando te incorporas a Gigabytes, es posible que tengas que considerar seriamente las opciones de optimización de rendimiento.

En general:

Si le preocupa el rendimiento, concéntrese en ajustar la configuración de MySQL existente y / o en configurar una capa de almacenamiento en caché. El almacenamiento en caché puede reducir en gran medida la carga de MySQL (particularmente con los sitios de WordPress, ya que generalmente realizan una gran cantidad de consultas de base de datos).

Si después de haber ajustado correctamente MySQL y configurado una capa de almacenamiento en caché decente, todavía le preocupa que su configuración de hardware ya no esté disponible, podría establecer una política de eliminación de contenido después de x cantidad de tiempo .

Nada de esto es específico de WordPress. Y no estoy seguro de que la pregunta tenga alguna respuesta que no se aplique al sitio web a cualquier o a la aplicación que se ejecuta en una pila LAMP. Pero tal vez alguien más tenga sugerencias con respecto a las estructuras de tablas MU u otros trucos de base de datos específicos de WP ... No lo sé.

    
respondido por el MathSmath 29.05.2012 - 20:33
4

Estrictamente desde un punto de vista de MySQL, tengo sugerencias sobre cómo mejorar el almacenamiento en caché de los datos / índices para una instancia de MySQL.

Tenga en cuenta que hay dos motores de almacenamiento principales para MySQL

  • MyISAM
  • InnoDB

Sus mecanismos de almacenamiento en caché son diferentes. Hay algo que puede hacer para ajustar el motor de almacenamiento de su elección.

MyISAM

MyISAM solo almacena en caché páginas de índice. Nunca almacena datos en caché. Puede hacer dos cosas para mejorar la E / S de las tablas MyISAM.

Mejora de MyISAM # 1

Cualquier tabla MyISAM que tenga columnas VARCHAR puede convertirse internamente a CHAR sin tocar el diseño inicial. Supongamos que tiene una tabla llamada mydb.mytable y desea mejorar la E / S para ella, realice lo siguiente:

ALTER TABLE mydb.mytable ROW_FORMAT=Fixed;

Esto aumentará el tamaño de la tabla 60% -100% pero producirá un aumento del rendimiento del 20-30% en I / O sin cambiar nada más . Escribí sobre esto antes en el DBA StackExchange:

Mejora de MyISAM # 2

Debe aumentar el caché de claves MyISAM (según el tamaño de < strong> key_buffer_size ). Ejecuta esta consulta, por favor:

SELECT CONCAT(ROUND(KBS/POWER(1024,
IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.4999),
SUBSTR(' KMG',IF(PowerOf1024<0,0,
IF(PowerOf1024>3,0,PowerOf1024))+1,1))
recommended_key_buffer_size FROM
(SELECT LEAST(POWER(2,32),KBS1) KBS
FROM (SELECT SUM(index_length) KBS1
FROM information_schema.tables WHERE engine='MyISAM' AND
table_schema NOT IN ('information_schema','mysql','performance_schema')) AA ) A,
(SELECT 2 PowerOf1024) B;

Esto te mostrará el tamaño ideal de key_buffer_size basado en tu conjunto de datos actual.

InnoDB

InnoDB almacena en caché los datos y los índices. Si convirtió todos sus datos a InnoDB y actualmente está ejecutando WordPress desde una base de datos InnoDB, necesita dimensionar su grupo de búfer InnoDB (dimensionado con innodb_buffer_pool_size ). Ejecuta esta consulta, por favor:

SELECT CONCAT(ROUND(KBS/POWER(1024,
IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.49999),
SUBSTR(' KMG',IF(PowerOf1024<0,0,
IF(PowerOf1024>3,0,PowerOf1024))+1,1)) recommended_innodb_buffer_pool_size
FROM (SELECT SUM(data_length+index_length) KBS FROM information_schema.tables
WHERE engine='InnoDB') A,
(SELECT 2 PowerOf1024) B;

Esto te mostrará el tamaño ideal de key_buffer_size basado en tu conjunto de datos actual.

Proyecciones

Si proyecta que su conjunto de datos crecerá 20 veces más, solo multiplique lo que esta consulta recomienda para 20. Suponga que su conjunto de datos MyISAM es de 15 MB y 3 MB es la suma de sus índices. Si estima que tendrá 20 veces más datos, establezca key_buffer_size a 60MB como este en /etc/my.cnf:

[mysqld]
key_buffer_size=60M

luego reinicie MySQL. Lo mismo se aplicaría al InnoDB Buffer Pool.

Si todos sus datos son InnoDB, debe realizar una Limpieza completa de su infraestructura InnoDB que publiqué en StackOverflow .

    
respondido por el RolandoMySQLDBA 05.06.2012 - 21:58
2
  

¿En qué momento la cantidad de entradas en la base de datos afecta el rendimiento del sitio web de front-end?

Cuando las consultas comienzan a llegar al límite de recursos de su cuenta de alojamiento.

  

¿Qué puedes hacer como administrador de sitios web para que esto funcione sin problemas a medida que tu base de datos crece?

Mantenga un ojo en el uso de recursos. Tome medidas para aumentar los recursos y / u optimizar el uso.

  

¿Qué puede esperar en términos de rendimiento después del quinto año cuando su base de datos tenga 25 a 30 mb grandes?

No debería haber cambios en el rendimiento de esa pequeña base de datos.

Si espera que su sitio crezca tan lentamente, entonces tiene mucho tiempo para aprender a manejar el crecimiento.

    
respondido por el shanebp 29.05.2012 - 19:09

Lea otras preguntas en las etiquetas