web-dev-qa-db-fra.com

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

En espérant avoir des retours sur l'optimisation et la maîtrise des performances à mesure que la base de données WordPress se développe ... pour peindre une image ... disons que vous avez un site WordPress/Buddypress MU qui commence à environ 150 Ko (installation de Vanilla) ... au fil du temps, les utilisateurs ajoutent des blogs, des forums, des publications et des commentaires, et la base de données passe à 5 Mo ... puis à 10 Mo l'année suivante .... Supposons également que les contrôles d'hébergement sont une installation standard co-localisée, telle que Cpanel ou Plesk.

  • À quel moment le nombre d'entrées dans la base de données a-t-il un impact sur 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 à mesure que votre base de données se développe?
  • À quoi pouvez-vous vous attendre en termes de performances après la cinquième année lorsque votre base de données aura une taille de 500 à 600 Mo?

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

Cordialement,

S.

9
Simon

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.

N'oubliez pas 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 cache jamais les données. Vous pouvez faire deux choses pour améliorer les E/S pour les tables MyISAM.

MyISAM Improvement # 1

Toute table MyISAM comportant 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, 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 de 20-30% des performances d'E/S sans rien changer d'autre}. J'ai déjà écrit à ce sujet dans DBA StackExchange:

MyISAM Improvement # 2

Vous devez augmenter le cache de la clé MyISAM (au format 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 idéale key_buffer_size 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 au format InnoDB et que vous utilisez actuellement WordPress à partir d'une base de données InnoDB complète, vous devez redimensionner votre pool de mémoire tampon InnoDB (avec la taille innodb_buffer_pool_size ). Exécutez cette requête, procédez comme suit:

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 idéale key_buffer_size en fonction de votre ensemble de données actuel.

Les projections

Si vous projetez que votre jeu de données augmentera 20 fois plus, multipliez simplement ce que cette requête recommande par 20. Supposons que votre jeu de données MyISAM mesure 15 Mo et que 3 Mo soient la somme de vos index. Si vous estimez que vous aurez 20 fois plus de données, définissez la taille de key_buffer 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 mémoire tampon InnoDB.

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

4
RolandoMySQLDBA

À quel moment le nombre d'entrées dans la base de données a-t-il un impact sur 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 à mesure que votre base de données se développe?

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

Que pouvez-vous attendre en termes de performances après la cinquième année lorsque votre base de données a une taille de 25 à 30 Mo?

Il ne devrait y avoir aucun changement de performance sur cette toute petite base de données.

Si vous vous attendez à ce que votre site connaisse une croissance aussi lente, vous avez tout le temps d’apprendre à gérer cette croissance.

2
shanebp