web-dev-qa-db-fra.com

Base de données Wordpress lente - devrais-je passer à InnoDB?

J'ai un site WordPress avec plus de 10 000 messages et les choses commencent à devenir très lentes chaque fois que j'ajoute et modifie des messages. Le chargement des pages est agréable et rapide pour les utilisateurs, ainsi que les listes d’administrateurs, mais c’est lors des écritures ou des mises à jour que le serveur passe à 100% en CPU et prend beaucoup de temps (parfois plus long que le délai de 60 secondes de PHP).

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 faire 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'autres optimisations, mais je pense que cela pourrait avoir le plus gros impact.

Merci

Edit : J'ai trouvé l'un des problèmes majeurs à l'origine de la lenteur, c'est YARPP (Yet Another Related Posts Plugin) qui régénérait la "parenté" à chaque fois, et cela semblait être dû aux balises 2k + que nous avons. . J'ai désactivé l'option "Considérer les balises" et cela s'est 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.

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

10
Adam Heath

Je voudrais en effet passer à InnoDB. Le verrouillage de table/verrouillage de ligne a longtemps fait l’objet de nombreuses discussions. 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), ne met en cache que 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. Selon le 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% RAM et 10% pour les liaisons de base de données, et laisser 10% pour le système d'exploitation. Ceci est vrai même pour différents systèmes d'exploitation .

J'ai recommandé ces solutions aux clients Drupal } avec un succès retentissant. _ { Cela s'applique à Wordpress } _ tout aussi bien. 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 ne pouvez utiliser davantage 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 deviendront finalement deviendront une exigence .

10
RolandoMySQLDBA

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 de changer, vous devriez au moins faire ce qui suit

  • 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 trouvé 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 saccadés, une dizaine de personnes pouvant essayer de commenter en même temps), et il est possible que quelles requêtes fonctionnent lentement et pourquoi peuvent vous amener à une meilleure compréhension du problème et à une VRAIE solution!

5
anu