Speedy MySQL 5.6 takes aim at NoSQL, MariaDB
The downside? It's still owned by Oracle
Oracle has announced general availability of MySQL 5.6, even as many MySQL users prepare to transition to alternatives such as MariaDB because of what they claim is Oracle's overweening handling of the open source database.
"The new features and enhancements that MySQL 5.6 delivers further demonstrate Oracle's investment in driving MySQL innovation, making MySQL a fantastic fit for today's most demanding Web, Cloud and embedded application requirements," Tomas Ulin, Oracle's VP of MySQL engineering, said in a statement on Tuesday.
Strictly speaking, builds of MySQL 5.6 have been publicly available for some time. In development for nearly two years, the 5.6 code tree has gone through a series of milestone releases, culminating in the build released on Tuesday – version 5.6.10 – which is the first to be deemed ready for production use.
With this release, Oracle has focused on improving the performance, scalability, reliability, and manageability of the database, in addition to adding features designed to make MySQL more competitive with NoSQL-based data stores. But for some customers, those enhancements might not be reason enough to stick with a product that has already strayed from its open source roots.
The new stuff: Faster, more stable, more agile
There's a lot to like in MySQL 5.6. Multiple improvements to the InnoDB storage engine – which was made the default as of MySQL 5.5 – allow MySQL 5.6 to handle transactional and read-only workloads more efficiently and to scale better on systems that support upward of 48 concurrent processor threads. The upshot is that MySQL 5.6 is significantly faster than MySQL 5.5 for most jobs.
MySQL's SQL query optimizer has also been enhanced, resulting in dramatic improvements in execution times for various types of queries. In some cases, Oracle claims users will see significant performance improvements, and that queries that once took days to run will complete in seconds.
Replication, which Oracle says is becoming one of MySQL's most popular features, has also gotten some love. MySQL 5.6 handles replication faster and more reliably than its predecessor, thanks to multiple new optimizations and failsafe features.
But perhaps the most interesting new features in MySQL 5.6 are those designed to make the database more flexible and agile, in ways that traditional SQL admins may find surprising.
MySQL began life as a fast, no-nonsense data store for lightweight workloads and web apps, and has largely been playing catch-up with its more fully-featured RDBMS cousins ever since. But these days it must also compete with NoSQL databases, which have been steadily encroaching on its former high-performance niche. MySQL 5.6 doesn't take the challenge lying down.
One of the claimed advantages of NoSQL databases has been that they are schema-less, so you never need to worry about having to take the database offline when you decide you need to muck around with its schema. But MySQL 5.6 actually allows admins to apply data definition language (DDL) operations to online, live databases, which makes having a schema less burdensome.
In addition, MySQL 5.6 allows NoSQL-style access to InnoDB data via the Memcached API. This means developers can use any of the many existing Memcached clients and libraries to bypass the overhead of query parsing, and grab data as simple key-value pairs, resulting in as much as a 9x performance improvement for SET/INSERT operations.
These are just a few of the major new features in the latest version of MySQL. For a deeper look into what has changed, check the official MySQL blog or the MySQL technical documentation, available here.
Open sourcers say yes to MySQL, but no to Oracle
Despite all the improvements, however, many current MySQL users say they have no plans to upgrade to version 5.6, or indeed to any future version of the database offered by Oracle. Instead, they intend to migrate to one of several forks of the MySQL code base that serve as drop-in replacements for MySQL – most notably MariaDB, a spinoff managed by MySQL co-creator Monty Widenius.
Widenius has been one of the more vocal critics of Oracle's management of MySQL, going as far as to accuse the database giant of reneging on promises it made to EU antitrust regulators as a condition of its $8.5bn acquisition of Sun Microsystems in 2009.
Since taking control of MySQL, Oracle has jacked up its support prices and switched to an "open core" model, in which the basic version of the database is available for free, but extensions aimed at enterprise customers are proprietary, closed source, and cost a pretty penny.
Even more worrying to some – Widenius included – is that Oracle releases bug fixes and security patches for MySQL less often than Sun used to, and when it does, it doesn't disclose as much information as Sun did. Most notably, Oracle has not released test cases for any of its recent fixes, which Widenius says makes MySQL "as opaque to external developers as any piece of closed source software."
Little wonder, then, that the open source community has taken notice. Two of the most prominent community-maintained Linux distributions – Fedora and OpenSuse – have both voted to switch to MariaDB as their default MySQL-compatible database in their next major releases, meaning users of those distros will have to install MySQL themselves if they want to use Oracle's version.
Oracle's Andrew Rist argued on public mailing lists that Fedora should use MySQL 5.6 instead, claiming that "switching to MariaDB would be going backwards." But the Fedora Engineering Steering Committee didn't buy it, and on January 30, it voted 7–0 in favor of the switch.
Meanwhile, Wikipedia – a high-traffic website, to say the least – has already begun migrating its MySQL servers to MariaDB, having described Widenius's spinoff as "the best route to ensuring a truly open and well supported future for MySQL derived database technology."
MySQL and MariaDB: The schism widens
If more MySQL customers follow suit, it could be bad news for Oracle, as the MySQL and MariaDB code bases show signs of diverging in ways that could make them incompatible over time.
Although MariaDB is based on the MySQL source code, the latest version of MariaDB is derived from MySQL 5.5, rather than 5.6. According to MariaDB's Rasmus Johansson, that's because with the 5.6 release, Oracle inexplicably changed the file structure of the MySQL code base – enough so that merging all of the existing MariaDB code with the MySQL 5.6 file tree would be "a very time consuming job."
To Johansson, that effort wasn't worth it. "MariaDB is not only about being an alternative to MySQL. MariaDB is largely about innovating and improving MySQL technology. MySQL 5.6 was not a suitable base for innovation," he wrote.
For now, the plan is for MariaDB to eventually include all of the features of MySQL 5.6, either by merging Oracle's code into MariaDB or by re-implementing the features from scratch. But MariaDB also plans to introduce features that aren't available in MySQL. As Johansson points out, "Without innovation MariaDB isn't a product of its own."
That leaves customers with a clear choice to make. MySQL 5.6 offers significant new features and enhancements, but so does MariaDB. Which way customers will swing largely comes down to how comfortable they are with MySQL's future under Oracle – and on that score, many have already begun to vote with their feet. ®