I often find myself in conversations with long time MySQL users who tell me about little annoyances in MySQL that make the product harder to use. Sometimes these annoyances can stay in a product for seemingly forever, because they require a change in behaviour (breaking backwards compatibility) or they are the result of architectural limitations not easily fixed.
In either case, I think it’s important to commend the MySQL engineering team at Oracle, because as well introducing a number of big ticket features for MySQL 5.6, they actually invested a lot of time into closing out a lot of old bugs.
Here is my list of historical gripes, now resolved:
innodb-file-per-tableON by default means it is easier to reclaim space caused by run-away tables.
- When you change
innodb_log_file_sizein configuration, InnoDB will now resize logs to match automatically.
- Temporal data types can now support microseconds.
- Silent storage engine substitution is disabled by default (
- Subqueries are now optimized.
- Stored procedures offer a way to get more information on errors.
- Timestamps can be maintained on more than one column.
- Replication slaves are crash safe. This means when a slave crashes you no longer need to re-image its data from the master or another slave. It can resume from where it was.
- Replication failover is much easier with GTIDs. Previously it was very difficult when you had a master fail with many slaves. You could not simply pick a new master from one of the slaves and reposition the other slaves under it.
- Indexes can now be added online, which means less downtime for a lot of people.
- There’s a standard way to find unused indexes (performance_schema).
I should point out that don’t think MySQL’s alone in having these nuances – I think the political correct name is a “legacy feature” 🙂
In MySQL 5.7, my gripe about Control-C not working in the client has already been fixed. The Bug System also has the ability to vote for a bug as impacting you. So if you see something annoying, please click ‘Affects me’ to leave feedback.
Did I miss something? Please leave a comment.