Mysql
 sql >> Base de données >  >> RDS >> Mysql

Pourquoi MySQL InnoDB est-il beaucoup plus lent que MyISAM pour les analyses de table complètes ?

Sur mon serveur avec votre configuration mes performances de base sont les suivantes :

  • InnoDB :5,71 s
  • MonISAM :2,50 s

Ce n'est pas mal dans mon livre, mais il peut nécessiter quelques ajustements.

Vos performances InnoDB peuvent être améliorées sur plusieurs fronts :

Augmenter innodb_buffer_pool_size

  • Il s'agit de la variable de configuration InnoDB la plus importante. Idéalement, il devrait être de 70 à 80 % de votre RAM disponible sur un serveur dédié à MySQL et InnoDB.
  • Augmentation de innodb_buffer_pool_size sur mon serveur à 2G (plus que suffisant pour ce test) diminué le temps InnoDB à 4.60s

Faites de l'identifiant la CLÉ PRIMAIRE

  • InnoDB regroupe ses données basées sur PRIMARY KEY. Lorsque vous n'en déclarez pas, InnoDB en génère implicitement un au hasard. Avoir une clé primaire séquentielle (id) est plus rapide qu'une clé aléatoire.
  • Le fait de faire de l'identifiant la CLÉ PRIMAIRE sur mon serveur diminué le temps InnoDB à 3.80s

Mettre à jour votre MySQL/InnoDB

Avec MySQL 5.1+, MySQL prend en charge les moteurs de stockage enfichables. Plus précisément, le nouveau Plugin InnoDB .

Le nouveau moteur InnoDB fournit de nombreuses améliorations de performances qui peuvent avoir des effets significatifs sur ce type particulier de requête.

À noter :

  • Depuis MySQL 5.1.38, le plug-in InnoDB est inclus dans MySQL
  • Depuis MySQL 5.1.43, le plug-in InnoDB est non seulement inclus, mais il s'agit du moteur par défaut de MySQL