Wordpress Database Slow - devrais-je passer à InnoDB?

10

J'ai un site WordPress avec plus de 10 000 publications, et les choses commencent à devenir très lentes chaque fois que j'ajoute et modifie des publications. Les pages se chargent bien et rapidement pour les utilisateurs, ainsi que les listes des publications de l'administrateur, mais le serveur accède à 100% de la capacité de traitement et prend beaucoup de temps (parfois plus longtemps que le délai d'attente de PHP de 60 secondes).

Je pense que cela est susceptible de faire avec le verrouillage au niveau de la table de MyISAM, et envisage de passer à InnoDB. Quelles sont les implications de cela?

Quelques statistiques:

select  - per hour ~22k
update  - per hour ~7.6k
set option  - per hour ~7k

Je sais que je peux faire beaucoup d’optimisations, mais j’ai le sentiment que cela pourrait avoir le plus gros impact.

Merci

Modifier : j'ai découvert l'un des problèmes majeurs à l'origine de la lenteur, c’est YARPP (Yet Another Related Posts Plugin) qui régénère à chaque fois le "lien de parenté", ce qui semble être dû. aux 2k + tags que nous avons. J'ai désactivé l'option "Considérer les balises" et cela a considérablement accéléré.

De plus, d'autres plugins qui régénèrent des choses peuvent causer ce genre de problèmes, tels que des plugins de sitemap XML.

Ainsi, mon problème immédiat est résolu, même si j'aimerais toujours entendre une bonne réponse à InnoDB vs MyISAM pour Wordpress!

    
posée Adam Heath 24.02.2011 - 12:34

2 réponses

10

Je passerais effectivement à InnoDB. Le verrouillage de table / verrouillage de ligne a longtemps été discuté par beaucoup. Je choisirais toujours InnoDB haut la main. Cependant, , il existe une autre raison profonde de choisir InnoDB ... CACHING .

Alors que la plupart des gens se vantent que MyISAM est plus rapide pour les lectures, la plupart des gens oublient que la mémoire cache de MyISAM, appelée cache de clé (définie par key_buffer_size), met uniquement en cache les pages d'index des fichiers .MYI. Il ne met jamais en cache les pages de données. Il a un maximum officiel de 4 Go dans les systèmes 32 bits. 8 Go est le meilleur maximum pour 64 bits.

Le pool de mémoire tampon InnoDB met en cache les pages de données et d'index. En fonction du serveur que vous possédez, vous pouvez mettre en cache la totalité du jeu de données dans la RAM. Vous pouvez accorder à InnoDB jusqu'à 80% de RAM et 10% pour les conférences de base de données, et laisser 10% pour le système d'exploitation. C'est vrai même pour différents systèmes d'exploitation .

J'ai recommandé ces solutions aux clients Drupal avec un succès remarquable. Cela s'applique également à Wordpress . J'ai fourni un support de base de données pour les clients avec WordPress. Mêmes améliorations.

Vous pouvez toujours configurer la mémoire pour InnoDB plus efficacement que vous pouvez plus MyISAM. Il existe toujours un moyen de adapter InnoDB à vos besoins en termes de performances . Au fur et à mesure de la croissance de vos données, elles devenir une exigence .

    
réponse donnée RolandoMySQLDBA 22.04.2011 - 04:19
5

InnoDB ne vous aidera probablement pas - le verrouillage au niveau des pages / lignes contribue à atténuer les conflits, mais il ne semble pas que ce soit votre problème.

Beaucoup de choses suggèrent que MyISAM est plus lent que InnoDB dans le scénario moyen d'un blog (beaucoup plus de lectures que d'écritures).

Avant d'effectuer un changement, vous devez au moins effectuer les opérations suivantes

  • lancez mysqltuner qui vous donnera quelques conseils de configuration (ce n’est pas infaillible ou tout savoir cependant)
  • activez la journalisation lente des requêtes, laissez-la pendant environ un jour, puis commencez à parcourir le journal et à EXPLIQUER les requêtes pour voir ce qui se passe

De mon expérience personnelle, j’ai constaté que l’ajout d’un index à un champ non indexé sur wp_comments a énormément aidé dans ma situation particulière (périodes de commentaires fastidieux, dans lesquels une dizaine de personnes pourraient essayer de commenter en même temps), et c’est possible. Le fait de savoir quelles requêtes tournent lentement et pourquoi peut vous amener à une meilleure compréhension du problème et à une VRAIE solution!

    
réponse donnée anu 02.03.2011 - 11:23

Lire d'autres questions sur les étiquettes