1

I wrote code that inserts about 15 millions rows into tables in MyISAM and InnoDB for comparsion.

MyISAM and InnoDB are set up with no optimization configuration in /etc/mysql/my.cnf.

And tables are created with no indexes.

Insertion are done using statements like

INSERT INTO Table (columnA, columnB, columnC) VALUES (?, ?, ?)..." 
(10,000 (?, ?, ?)s) 

db.Exec(stmt, valueArgs...)

with valueArgs being the actual VALUES It is widely believed that MyISAM is faster than InnoDB in insertion.

Baron Schwartz, author of the book High Performance MySQL, explained why in this post Mysql: Insert performance INNODB vs MYISAM.

However, in my experiment, I found out that InnoDB is actually faster than MyISAM. Could anyone give me some insights?

mysql  Ver 14.14 Distrib 5.7.30, for Linux (x86_64) using  EditLine wrapper
10
  • 4
    InnoDB has undergone many improvements over time, including performance enhancements, and that question you linked is 8 years old. As for MyISAM, while still available its use is deprecated and so doesn't receive nearly as much development attention. Are you looking for something more than that? Commented Jun 5, 2020 at 1:44
  • @WillemRenzema Hi, thank you for your valuable insights. I was just doing an experiment and was expecting that MyISAM performs better in bulk insertion than InnoDB. I would like some more deep insights.
    – Bruce
    Commented Jun 5, 2020 at 2:55
  • 1
    I'd guess (stress guess) that if you went back to version 5.5 of MySQL (or before...), you'd find that MyISAM would perform better than InnoDB - as @WillemRenzema says, InnoDB is still being seriously worked on - whereas MyISAM is being deprecated - so it's hardly surprising that InnoDB is overtaking it in areas where it traditionally performed better - it may well still perform better under some circumstances, but they will become fewer and fewer as time goes on. You might like to look at MariaDB's Aria engine which is a continuation of MyISAM which is under active development?
    – Vérace
    Commented Jun 5, 2020 at 3:39
  • or just enjoy fast Innodb with all its other benefits.
    – danblack
    Commented Jun 5, 2020 at 4:22
  • @Vérace Thank you for your insights.
    – Bruce
    Commented Jun 5, 2020 at 5:17

1 Answer 1

1

InnoDB has been faster than MyISAM at everything for at least a decade. This shouldn't be a surprise in 2020. There hasn't been a compelling case for using MyISAM in a very long time.

On a workload that involves any concurrency, the difference will be even bigger.

Also, note that Baron's post is from 2012 - and it was probably borderline in terms of accuracy even back then.

2
  • It makes sense. Thank you. But could you offer more insights?
    – Bruce
    Commented Jun 9, 2020 at 6:56
  • Sure, what additional insight would you like? Commented Jun 9, 2020 at 8:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.