Quelle est une bonne stratégie pour planifier la croissance de la base de données WordPress?

9

En espérant quelques commentaires sur le sujet de l'optimisation et du maintien des performances à mesure qu'une base de données WordPress se développe ... pour peindre une image .... disons que vous avez un site MU WordPress / Buddypress qui commence à environ 150 Ko (installation vanille) ... au fil du temps, les utilisateurs ajoutent des blogs, des forums, des publications et des commentaires et la base de données augmente à 5 Mo ... puis à 10 Mo l'année prochaine .... En supposant également que les contrôles d'hébergement soient une configuration colocalisée standard comme Cpanel ou Plesk.

  • À quel moment le nombre d'entrées dans la base de données affecte-t-il les performances du site Web frontal?
  • Que pouvez-vous faire en tant que gestionnaire de site Web pour assurer le bon fonctionnement de votre base de données?
  • À quoi pouvez-vous vous attendre en termes de performances après la 5e année lorsque votre base de données fait 500 - 600 Mo?

Merci pour tout commentaire que vous pourriez avoir sur le maintien d'un navire serré.

Cordialement,

S.

Simon
la source
3
Vous avez posé 7 questions et accepté seulement 1. Pas un bon dossier. :-(
8
25 Mo n'est rien. Vous devez vous inquiéter de la taille de la base de données car elle atteint les Go.
Dunhamzzz
Merci pour vos commentaires. Si nous avons des problèmes de performances à 500 Mo, c'est probablement notre hébergeur. PS est revenu et a accepté les réponses aux questions.
Simon

Réponses:

4

Vos questions spécifiques:

1) Il n'y a pas de limite stricte au "nombre d'entrées" qu'une base de données peut contenir avant que les performances ne soient affectées. Les performances dépendent autant de votre matériel et de votre configuration que de la taille et de la structure de la base de données.

2) Si vous êtes préoccupé par l'évolutivité de votre couche DB, vous pouvez l'exécuter dans un cluster, ou sur une boîte cloud ou un VPS qui permet le redimensionnement. Si votre base de données commence à devenir lente, vous pouvez augmenter la taille (mais généralement à un coût supplémentaire). Ces options augmentent le coût, mais sont vraiment le meilleur moyen d'assurer l'évolutivité d'une base de données.

3) Cela dépend vraiment de votre configuration d'hébergement et de votre architecture de base de données. Mais en général (sauf si vous êtes sur une boîte vraiment pas chère), je ne m'inquiéterais pas d'une base de données WordPress de 30 Mo. WordPress fait un bon travail d'indexation des tables, et même une configuration OOB MySQL devrait facilement gérer les requêtes WordPress sur une base de données de cette taille. Lorsque vous vous lancez dans les gigaoctets, vous devrez peut-être examiner sérieusement les options d'optimisation des performances.

En général:

Si vous êtes préoccupé par les performances, concentrez-vous sur le réglage de votre configuration MySQL existante et / ou la configuration d'une couche de mise en cache. La mise en cache peut réduire considérablement la charge de MySQL (en particulier avec les sites WordPress, car ils effectuent généralement un grand nombre de requêtes DB).

Si après avoir correctement réglé MySQL et mis en place une couche de mise en cache décente, vous êtes toujours inquiet de dépasser votre configuration matérielle, vous pouvez instituer une politique de suppression de contenu après x durée.

Aucun de ces éléments n'est spécifique à WordPress. Et je ne suis pas sûr que la question ait des réponses qui ne s'appliquent à aucun site Web ou application fonctionnant sur une pile LAMP. Mais peut-être que quelqu'un d'autre a des suggestions concernant les structures de table MU ou d'autres astuces DB spécifiques à WP ... Je ne sais pas.

MathSmath
la source
4

Strictement d'un point de vue MySQL, j'ai des suggestions sur la façon d'améliorer la mise en cache des données / index pour une instance MySQL.

Gardez à l'esprit qu'il existe deux principaux moteurs de stockage pour MySQL

  • MyISAM
  • InnoDB

Leurs mécanismes de mise en cache sont différents. Il y a quelque chose que vous pouvez faire pour régler le moteur de stockage de votre choix.

MyISAM

MyISAM ne met en cache que les pages d'index. Il ne met jamais en cache les données. Vous pouvez faire deux choses pour améliorer les E / S des tables MyISAM.

Amélioration MyISAM # 1

Toute table MyISAM qui possède des colonnes VARCHAR peut être convertie en interne en CHAR sans toucher à la conception initiale. Supposons que vous ayez une table appelée mydb.mytable et que vous souhaitiez améliorer les E / S pour cela, procédez comme suit:

ALTER TABLE mydb.mytable ROW_FORMAT=Fixed;

Cela augmentera la taille de la table de 60% à 100% mais entraînera une augmentation des performances de 20 à 30% des E / S sans rien changer d'autre . J'ai déjà écrit à ce sujet dans le DBA StackExchange:

Amélioration MyISAM # 2

Vous devez augmenter le cache de clés MyISAM (tel que dimensionné par key_buffer_size ). Exécutez cette requête, veuillez:

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;

Cela vous montrera la taille de clé_buffer_ idéale en fonction de votre ensemble de données actuel.

InnoDB

InnoDB met en cache les données et les index. Si vous avez converti toutes vos données en InnoDB et exécutez actuellement WordPress à partir d'une base de données entièrement InnoDB, vous devez dimensionner votre pool de tampons InnoDB (dimensionné avec innodb_buffer_pool_size ). Exécutez cette requête, veuillez:

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;

Cela vous montrera la taille de clé_buffer_ idéale en fonction de votre ensemble de données actuel.

Projections

Si vous prévoyez que votre ensemble de données augmentera de 20 fois, multipliez ce que cette requête recommande par 20. Supposons que votre ensemble de données MyISAM soit de 15 Mo et 3 Mo est la somme de vos index. Si vous estimez que vous aurez 20 fois plus de données, définissez key_buffer_size sur 60 Mo comme ceci dans /etc/my.cnf:

[mysqld]
key_buffer_size=60M

puis redémarrez MySQL. La même chose s'appliquerait au pool de tampons InnoDB.

Si toutes vos données sont InnoDB, vous devez effectuer un nettoyage complet de votre infrastructure InnoDB que j'ai publié dans StackOverflow .

RolandoMySQLDBA
la source
2

À quel moment le nombre d'entrées dans la base de données affecte-t-il les performances du site Web frontal?

Lorsque les requêtes commencent à atteindre la limite de ressources de votre compte d'hébergement.

Que pouvez-vous faire en tant que gestionnaire de site Web pour assurer le bon fonctionnement de votre base de données?

Gardez un œil sur l'utilisation des ressources. Prenez des mesures pour augmenter les ressources et / ou optimiser l'utilisation.

Que pouvez-vous attendre en termes de performances après la 5e année lorsque votre base de données est de 25 à 30 Mo?

Il ne devrait y avoir aucun changement de performances sur cette minuscule base de données.

Si vous vous attendez à ce que votre site se développe lentement, vous avez tout le temps d'apprendre à gérer la croissance.

shanebp
la source