I'm switching a large table to InnoDB from myISAM. There has been a lot of discussion regarding why switching makes sense, but not much about HOW to do it while making sure the table performs well.
Assuming I'll have InnoDB and MyISAM tables in on database, are there parameters I should change in the MySQL conf file to facilitate better performance?
Any other defaults that can be bumped up to tweak performance?
Your innodb_buffer_pool_size should be set to the amount of InnoDB data and indexes you have. Run this query and it will tell you the Minimum recommended setting for mysql's current Innodb Data
If your InnoDB data far exceeds the installed RAM on the DB server, I recommend 75% of the installed RAM on the box. So, if you have a 16GB server, use 12G as the innodb_buffer_pool_size.
You must also set innodb_log_file_size to 25% of innodb_buffer_pool_size or 2047M, which ever is smaller. To change the file ib_logfile0 and ib_logfile1, you must:
If you are using MySQL 5.5, set the following:
If you will retain MyISAM data run this query for the ideal setting for key_buffer_size:
UPDATE 2013-02-13 12:55 EDT
I have learned lately not to set innodb_io_capacity very high, if at all. This is especially true on commodity hardware and VMs: