web-dev-qa-db-fra.com

Passer de MyISAM à InnoDB améliorerait-il les performances du tableau de commentaires?

Un site que j'ai construit reçoit beaucoup de commentaires en un court laps de temps. Vous pouvez donc laisser 100 commentaires dans 5 ou 10 minutes.

Cela semble entraîner une charge assez lourde sur la base de données, en particulier lorsqu'elle est combinée à des widgets de commentaires récents - j'ai vu le serveur se charger rapidement en spirale jusqu'à 40+, et en utilisant mtop, je peux voir beaucoup de requêtes bloquées.

Donc, j'utilise MyISAM en tant que moteur de stockage, qui verrouille toute la table pour l'écriture. Passer à InnoDB, qui (je crois, utilise le verrouillage des lignes), améliorerait-il les choses? En regardant la documentation MySQL, il semble parfaitement possible d'utiliser les deux moteurs dans la même base de données.

Alors, la question:

Le passage à InnoDB semble-t-il être une solution raisonnable à ce que j'ai décrit? Toute WP expériences/points de repère spécifiques?

6
anu

MyISAM verrouille toute la page pour les écritures et n'est pas conforme à ACID, tandis qu'InnoDB s'en tient au verrouillage des lignes comme vous le signalez et est conforme à ACID.

Cela le rend plus robuste lorsque vous avez beaucoup d'écritures, car plus rapide et moins sujet à la corruption des données.

D'après mon expérience, c'est plus lent pour les lectures, bien qu'il gère mieux les connexions simultanées.

Il encombre également le catalogue. (Un jour, j’ai passé de MyISAM à InnoDB, et le catalogue s’est envolé de 2 Go, soit la taille de ma base de données, pour des raisons que je n’ai jamais comprises, bien que je soupçonne que cela avait à voir avec des données temporaires création d'index, etc., qui n'a pas été vidé correctement.)

Quoi qu'il en soit ... Avec votre charge actuelle, InnoDB est une option, de même que memcached à côté d'un cache d'objets.

4
Denis de Bernardy