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

Différence de temps nécessaire pour insérer les enregistrements InnoDB/MyISAM

Il n'est pas clair quels paramètres de durabilité vous avez activés dans MyISAM ou Innodb, ni si vous utilisez des insertions à une seule ligne ou des insertions par lots dans les deux cas.

Si vous utilisez des insertions à une seule ligne, que vous n'utilisez pas de transactions et que la durabilité est activée (le paramètre par défaut dans InnoDB), vous verrez probablement les performances d'InnoDB fortement limitées par l'obligation de valider chaque transaction dans un stockage durable ( c'est-à-dire disque) après chaque insertion de ligne.

MyISAM n'a pas ce problème, car il n'est de toute façon pas durable, c'est-à-dire que si la machine plante, vous êtes plus ou moins assuré de perdre certaines données récemment écrites que la base de données avait précédemment déclarées avoir été écrites avec succès (sinon toute la table !).

Si vous voulez des performances d'insertion décentes, utilisez des insertions par lots et/ou des transactions, sinon vous mesurez simplement la vitesse d'une écriture suivie d'un fsync(), qui (sur un contrôleur RAID sans batterie sur un support magnétique rotatif) est juste la vitesse de rotation de votre disque.

La raison pour laquelle innodb est si cohérent, c'est que vous mesurez la vitesse de rotation de votre disque.

Cela dit, si vous avez un serveur occupé, vous voulez absolument, absolument, utiliser un contrôleur RAID alimenté par batterie, alors vous pouvez obtenir des performances de validation de transaction décentes ET une durabilité appropriée (en supposant que l'alimentation ne tombe pas en panne plus longtemps que la durée de vie de la batterie, et le serveur n'explose pas etc).