Alex, on 21 January 2010 - 09:48 PM, said:
Oops, I still need to change them over to InnoDB.
I'm pretty sure there are no queries using transactions on those tables yet, but there might be at some point, and then they'll need to be InnoDB. Well spotted!
Is it really necessary to have all tables in InnoDB format?
Some people think that MyISAM is kind of old fashion out of date mechanism and should be avoided, but its not true.
As from my experience:
- InnoDB is much slower than MyISAM for simple select queries.
- InnoDB support transactions and foreign keys, but when do we need them and how much would we trust MySQL for cascading delete or update routine? In many case we still need to control this procedure from application level.
- They handle indexing differently and for example InnoDB does not know how many records table contain and gives you approximate result when number is greater than 1000 MyISAM instead always know correct amount of records.
- Another difference between them that MyISAM does table level locking while InnoDB can do row level locking. Benefits from InnoDB could be for messaging systems or writing some sort of visitor statistic when you have to do read-write queries to different tables simultaneously.
- MyISAM supports (non-standard-SQL) fulltext indexing which InnoDB still does not.
- Backup process is handled better in MyISAM than InnoDB due to table locking.
- InnoDB takes more space on hard drive and consume more memory comparing to MyISAM (some hosting companies have restrictions on database size and allocated memory)
Of course InnoDB is new and has its own benefits, but I think only enterprise level applications could benefit from them.
I hope this information would help to make your application better and faster.
Here is some more information about
difference and benefits of MyISAM vs InnoDB