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.
mysql
database
optimization
Simon
la source
la source
Réponses:
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.
la source
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
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:
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:
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:
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:
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 .
la source
Lorsque les requêtes commencent à atteindre la limite de ressources de votre compte d'hébergement.
Gardez un œil sur l'utilisation des ressources. Prenez des mesures pour augmenter les ressources et / ou optimiser l'utilisation.
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.
la source