¿Cuál es una buena estrategia para planificar el crecimiento de WordPress DB?


9

Con la esperanza de obtener comentarios sobre el tema de la optimización y mantenerse al tanto del rendimiento a medida que crece una 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 vainilla) ... con el tiempo, los usuarios agregan blogs, foros, publicaciones y comentarios, y la base de datos crece a 5 MB ... luego a 10 MB al año siguiente ... También suponiendo que los controles de alojamiento son una configuración estándar colocada como Cpanel o Plesk.

  • ¿En qué momento el número de entradas en la base de datos afecta el rendimiento del sitio web front-end?
  • ¿Qué puede hacer como administrador de un sitio web para que esto funcione sin problemas a medida que crece su base de datos?
  • ¿Qué puede esperar en términos de rendimiento después del año 5 cuando su base de datos tiene un tamaño de 500 a 600 mb?

Gracias por cualquier comentario que pueda tener sobre mantener un barco apretado.

Saludos,

S.


3
Ha hecho 7 preguntas y ha aceptado solo 1. No es un buen registro. :-(

8
25mb no es nada. Debería preocuparse por el tamaño de la base de datos cuando llega a GB.
Dunhamzzz

Gracias por sus comentarios. Si tenemos problemas con el rendimiento a 500 mb, probablemente sea nuestra empresa de alojamiento. PD Volvió y aceptó las respuestas a través de las preguntas.
Simon

Respuestas:


4

Sus preguntas específicas:

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

2) Si le preocupa la escalabilidad de su capa de base de datos, puede ejecutarla en un clúster, o en una caja de nube o VPS que permita cambiar el tamaño. Si su base de datos comienza a volverse lenta, puede evaluarla (aunque generalmente a un costo adicional). Estas opciones agregan costos, pero son realmente la mejor manera de garantizar la escalabilidad de una base de datos.

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

En general:

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

Si después de ajustar MySQL correctamente y configurar una capa de almacenamiento en caché decente, todavía está preocupado por superar su configuración de hardware, podría instituir una política de eliminación de contenido después de x cantidad de tiempo.

Ninguna de estas cosas es específica de WordPress. Y no estoy seguro de que la pregunta tenga respuestas que no se apliquen a ningún sitio web o aplicación que se ejecute en una pila LAMP. Pero tal vez alguien más tenga sugerencias sobre las estructuras de la tabla MU u otros trucos de DB específicos de WP ... No lo sé.


4

Estrictamente desde un punto de vista de MySQL, tengo sugerencias sobre cómo mejorar el almacenamiento en caché de 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é las páginas de índice. Nunca almacena datos en caché. Puede hacer dos cosas para mejorar la E / S para las tablas MyISAM.

Mejora MyISAM # 1

Cualquier tabla MyISAM que tenga columnas VARCHAR se puede convertir 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 en un 60% -100%, pero producirá un aumento del rendimiento del 20-30% en E / S sin cambiar nada más . Escribí sobre esto antes en el DBA StackExchange:

Mejora MyISAM # 2

Debe aumentar el caché de claves MyISAM (según el tamaño de key_buffer_size ). Ejecute 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 le mostrará el key_buffer_size ideal basado en su conjunto de datos actual.

InnoDB

InnoDB almacena en caché tanto los datos como los índices. Si convirtió todos sus datos a InnoDB y actualmente está ejecutando WordPress desde una base de datos completa de InnoDB, deberá dimensionar su InnoDB Buffer Pool (dimensionado con innodb_buffer_pool_size ). Ejecute 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 le mostrará el key_buffer_size ideal basado en su conjunto de datos actual.

Proyecciones

Si proyecta que su conjunto de datos crecerá 20 veces más, solo multiplique lo que recomienda esta consulta en 20. Suponga que su conjunto de datos MyISAM es 15MB y 3MB es la suma de sus índices. Si estima que tendrá 20 veces más datos, configure key_buffer_size en 60MB de esta manera 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 de InnoDB que publiqué en StackOverflow .


2

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

Cuando las consultas comienzan a alcanzar el límite de recursos de su cuenta de hosting.

¿Qué puede hacer como administrador de un sitio web para que esto funcione sin problemas a medida que crece su base de datos?

Esté atento al uso de recursos. Tome medidas para aumentar los recursos y / o optimizar el uso.

¿Qué puede esperar en términos de rendimiento después del año 5 cuando su base de datos tiene un tamaño de 25 a 30 mb?

No debería haber ningún cambio en el rendimiento de esa pequeña base de datos.

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.