Différence de performances entre Innodb et Myisam dans Mysql

J'ai une table mysql avec plus de 30 millions de disques qui a été à l'origine être stockées avec myisam. Voici une description de la table:

Différence de performances entre Innodb et Myisam dans Mysql

Je voudrais exécuter la requête suivante sur ce tableau qui serait généralement environ 30 secondes. Je voudrais changer @eid chaque fois pour éviter de base de données ou la mise en cache disque.

select count(fact_data.id) 
    from fact_data 
    where fact_data.entity_id=@eid 
        and fact_data.metric_id=1

J'ai ensuite converti cette table innoDB, sans faire d'autres changements et par la suite la même requête retourne maintenant en moins d'une seconde à chaque fois que j'exécute la requête. Même quand je définie de façon aléatoire @eid pour éviter la mise en cache, la requête renvoie en moins d'une seconde.

J'ai fait des recherches sur les différences entre les deux types de stockage pour tenter d'expliquer l'amélioration spectaculaire de la performance, mais n'ont pas été en mesure de trouver quoi que ce soit. En fait, beaucoup de ce que j'ai lu indique que Myisam devrait être plus rapide.

Les questions que je suis en cours d'exécution à l'encontre d'une base de données locale avec aucune autre processus affectant la base de données au moment des tests.

OriginalL'auteur opike | 2012-03-30