web-dev-qa-db-fra.com

Drupal innodb de base de données ou MyISAM?

J'ai un Drupal, et je souffre de problèmes de performances. J'ai trouvé Comment convertir une base de données de MyISAM en InnoDB? indiquant que les performances peuvent s'améliorer en changeant.

Comment savoir si ma base de données MySQL est InnoDB ou MyISAM?

10
chrisjlee

Vous pouvez exécuter une requête personnalisée:

SELECT TABLE_NAME, ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'database_name'

pour répertorier toutes les tables de votre base de données et le moteur utilisé pour chacune.

Alternativement, vous pouvez vous connecter à votre base de données en utilisant phpMyAdmin et sélectionner votre base de données ... vous verrez le moteur dans la colonne Type dans la liste des tableaux.

Personnellement, je recommanderais Navicat pour MySQL , c'est une interface graphique MySQL très agréable et facilite la découverte de choses comme celle-ci.

Source: http://www.electrictoolbox.com/mysql-table-storage-engine/

8
Clive

Ma meilleure expérience a été de décider par table. InnoDB est agréable, car il peut éviter le verrouillage de table (aucun autre processus ne peut lire à partir d'une table pendant qu'un processus écrit), mais il fonctionne terriblement avec COUNT () qui est souvent utilisé pour les requêtes de pageur.

(Edit: veuillez voir le commentaire de Clives ci-dessous)

Il existe également des implications sur votre configuration MySQL, en fonction de la base de données que vous utilisez. Si vous avez accès au serveur, mysqltuner devrait être votre première étape, pour vérifier la configuration:

https://github.com/rackerhacker/MySQLTuner-Perl#readme

6
Martin

Essayer simplement des choses pour obtenir un site Web plus rapidement, c'est comme changer aveuglément des voitures et espérons que vous obtiendrez un plus rapide la prochaine fois.

Essayez d'abord les fruits bas, si cela n'aide pas, essayez de trouver le vrai goulot d'étranglement.

  1. Avez-vous activé les mécanismes intégrés: mise en cache des pages (uniquement efficace pour les utilisateurs anonymes), agrégation CSS et JS?
  2. Si votre hôte propose un cache d'opcode comme APC, activez-le.
  3. Configurez votre Drupal localement, y compris la base de données complète.
  4. Assurez-vous que XDebug est en cours d'exécution.
  5. Commencez à réaliser un profilage de performances réel. De cette façon, vous pouvez identifier quelle partie de votre site Web consomme beaucoup de temps. Plus votre site Web est lent, plus il est facile de trouver le code/composant coupable.

Souvent, c'est juste une requête DB lente qui a besoin d'un index, ou d'un module qui fait les choses lentement.

J'ai également découvert de grandes différences entre les hébergeurs. Si vous installez un nouveau drupal hors de la boîte, les performances sont-elles correctes? Sinon, il est temps de chercher un autre hébergeur.

6
BetaRide

Juste un avertissement. Si votre on Drupal 6, vous pouvez installer le module DBTuner ; il peut facilement déplacer vos tables de MyISAM vers InnoDB. Alors oui, il y a un module pour ça!

5
mikeytown2

FWIW notre nœud de près de 20 Ko Drupal 6.x rencontrait des problèmes de performances et j'ai choisi de déplacer toutes les tables vers InnoDB. C'était facile et la façon dont je l'ai géré était d'utiliser mysqldump pour vider tout le contenu dans un fichier sql, utiliser un éditeur (sed) pour remplacer toutes les occurrences de MyISAM dans InnoDB puis recharger la base de données à partir de ce fichier. L'un des inconvénients est que vous ne pouvez pas récupérer de l'espace à partir d'une base de données InnoDB (IIRC) mais comme tant que vous conservez vos tables en double dans une base de données distincte, vous ne devriez avoir aucun problème. Oh, et nous avons constaté une augmentation significative des performances. Et parce que nous avons quatre Drupal instances le grand nombre de fichiers de table a été éliminé du système de fichiers (oui, ils sont contenus dans le fichier InnoDB lui-même.) C'est ma valeur de 0,02 $.

5
bobmct