Web Weaving: Transactional Storage Engines

After some talk with the developers of AIR, I did some of my own research into the difference between the MyISAM and InnoDB transactional storage engines found in MySQL, and found some interesting things. Contrary to my first belief, MyISAM under-performs when it comes to large-scale, simultaneous transactions (you really start seeing performance issues at around 1000 simultaneous transactions).

At first, all of the results I had were pointing to MyISAM being better, but after making InnoDB’s buffer pool larger and setting autocommit to 0 (meaning that it won’t auto commit any transactions), the results still weren’t looking too good, other than the CPU consumption was considerably lower (10-15%).

One thing I really liked was the fact that it uses row locking instead of table locking, which means that simultaneous reads and writes can be done without having to wait for the table to be unlocked. MyISAM is good for small scale websites, as InnoDB performs slower if there are fewer than 100 or so simultaneous connections and if the data is small (below ~10MB per transaction).

For now I think I will stick to MyISAM for my everyday coding, but I already know a few sites that could benefit from an engine switch…

This entry was posted in The Plank and tagged , , . Bookmark the permalink.

About Captain Thomas Mashek

"Captain Thomas Mashek is a self-imposed captain with no formal aerial history to speak of (or anywhere on record under that name). He donned the title of captain when the Zygote was presented to him by a strange man named Gwyn Wynn. The only stipulations with the ship were that Gwyn was to be a permanent part of the crew and that the crew would help him with his 'studies', no questions asked. Seeing this as a good opportunity, Thomas took this stranger up on his deal without giving much thought to it, figuring it was better than being stranded on this junk dock he managed to get himself to." - Excerpt from the Captain's Log.

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

CommentLuv badge