We use cookies to improve your experience. No personal information is gathered and we don't serve ads. Cookies Policy.

ExpressionEngine Logo ExpressionEngine
Features Pricing Support Find A Developer
Partners Upgrades
Blog Add-Ons Learn
Docs Forums University
Log In or Sign Up
Log In Sign Up
ExpressionEngine Logo
Features Pro new Support Find A Developer
Partners Upgrades
Blog Add-Ons Learn
Docs Forums University Blog
  • Home
  • Forums

3.2.0 DP2 InnoDB

Developer Preview

TJ Draper's avatar
TJ Draper
222 posts
9 years ago
TJ Draper's avatar TJ Draper

I noted in the changelog that the default database engine is now InnoDB. I also noted that no existing tables were converted from MyISAM to InnoDB. However, new grid fields tables are InnoDB and presumably any new table added to the database as of 3.2.0 will be InnoDB. A couple of questions:

  1. Is there any concern with mixing the tables with new tables going forward being InnoDB and original tables being MyISAM? I’ve always heard you should (mostly) not mix the storage engines.
  2. Is there a way to set the default engine from config? Maybe sites being updated from older installs with MyISAM tables should remain that way and set it so in the config?
  3. What are the dangers of mass converting all tables in the DB to InnoDB? I did it on my test install, but there is very limited sample data there.
       
Pascal Kriete's avatar
Pascal Kriete
2,589 posts
9 years ago
Pascal Kriete's avatar Pascal Kriete
Is there any concern with mixing the tables with new tables going forward being InnoDB and original tables being MyISAM?

It’s mostly an operations nuisance in the sense that things like backups don’t work the same. They are both prevalent enough that a shared host will be optimized to handle both. If you’re running a very large site we recommend talking to your host, but many of the largest sites are already on InnoDB anyways, mainly due to write lock contention on MyISAM.

What are the dangers of mass converting all tables in the DB to InnoDB? I did it on my test install, but there is very limited sample data there.

No real dangers for the first party tables, but with third party tables you have to be careful that none have fulltext indexes (we used to have one which we’re dropping as part of this update). For that same reason, any code that specifies a storage engine on table creation will not be forced to use InnoDB.

Since it can be hard to tell if an existing table is using MyISAM on purpose, or simply because it was the default, we don’t want to risk converting all tables in the updater. On a large site this might also be prohibitively slow to do in a PHP script. And lastly, if you’re running a large site then the read heavy tables that MyISAM is optimized for should not be converted without talking to your host. Database configuration at scale is a tricky thing.

We will have documentation for how to do the conversion for those that want to do it.

Is there a way to set the default engine from config? Maybe sites being updated from older installs with MyISAM tables should remain that way and set it so in the config?

It’s something to consider. Table creation is relatively rare inside the application so we’re not too concerned.

       

Reply

Sign In To Reply

ExpressionEngine Home Features Pro Contact Version Support
Learn Docs University Forums
Resources Support Add-Ons Partners Blog
Privacy Terms Trademark Use License

Packet Tide owns and develops ExpressionEngine. © Packet Tide, All Rights Reserved.