The development team for the open source MySQL database provided users yesterday with a peek into the future -- no TARDIS required.
In a blog post announcing MySQL 8.0.0's development milestone release (DMR), MySQL's engineers outlined the most significant changes, some of which address problems that have plagued MySQL for ages.
First, let's sort it out
The first question people are likely to ask: If the most recent version of MySQL was a 5.x release, why's this one 8.0? For one, version 6.0 was canned as part of the transition to "more frequent and timely releases of the MySQL Server." Version 7 was reserved for the clustering version of MySQL. That leaves 8.x as the next major version number for the common use-case version of MySQL.
Nomenclature aside, the major change most likely to win admirers is "a bigger effort to improve our UTF8 support," as described in the MySQL team blog post. Many of MySQL's problems with collations, text handling, full-text searching, and other associated issues have stemmed from the program's legacy approach.
The default character set from 8.0 on will be
utf8mb4 instead of
latin1, with language-specific collations to match. "UTF8 is the dominating character encoding for the web," the MySQL team wrote, "and this move will make life easier for the vast majority of MySQL users.... If time permits, we will also add accent and case sensitive collation."
Next, let me consult my dictionary
MySQL 8.0 also adds the "transactional data dictionary." Previous versions stored metadata about state in a mixture of on-disk files and database tables that was messy, difficult to troubleshoot, and prone to damage if the system crashed.
The new data dictionary is stored entirely in InnoDB tables -- the advanced storage engine now used as the default for MySQL -- and is accessed via a single systemwide API. Aside from increasing MySQL performance, it also makes the server more resilient and easier to extend with plugins.
The fruits of the ongoing top-down reworking of the SQL parser are seen in 8.0 as well. Most of the current changes involve data definition language query optimizations (such as
CREATE TABLE operations).
Many other changes in MySQL 8.0 are improvements on existing functionality or extensions of existing features. Indexes, for instance, can now be marked as "invisible" to temporarily conceal them from the query optimizer and thus determine if they can be dropped without problems.