The MySQL ecosystem has never been stronger. Oracle has responded to concerns from the community about MySQL 5.0 and 5.1 with strong performance and feature improvements in MySQL 5.5 and 5.6. Percona continues to push the envelope for performance, and MariaDB is making a strong case for a community-driven project.
I used to recommend that people use Percona Server, since it is very well tested and includes many performance improvements. Since then, MariaDB’s offering has become much more compelling, and Oracle’s MySQL has closed the gap with their performance upgrades. I would now have no problem recommending any of these products to customers, depending on their needs.
Who should use Oracle MySQL?
Oracle’s MySQL Server is a great product, and is currently the default choice for most. Most users do not need the performance improvements of Percona Server, or the new features in MariaDB. From a server administration perspective, the easy choice is often the best choice.
Others will be drawn to Oracle’s product because of the enterprise features and support. There’s something to be said for getting database support from Oracle. Oracle is perceived as the “stable” version of MySQL, and that’s a perception that makes business folk happy.
Cloud users will mostly likely find that Oracle MySQL is the preferred option. Amazon RDS and Rackspace both use the official version of MySQL (although they both likely do some customization). Amazon even allows you to use your own license of the Enterprise Edition, if you have one.
Oracle’s MySQL is also the best choice for users of the NDB storage engine, also known as MySQL Cluster. This isn’t a common use case, and most people using NDB are also using MySQL Enterprise Edition.
Who should use Percona Server?
Percona is a great choice for businesses who want a stable and highly optimized version of MySQL. They go to great lengths to ensure that it is suitable for enterprise users, so businesses need not shy away from it. It does not vary by much from Oracle’s MySQL in features, however. The inclusion of HandlerSocket will be useful for many who need the performance it offers, while still having SQL access to those tables. The Galera Cluster version may also be a reason to make the switch, as it offers better redundancy than simple replication.
Percona is also well-known for offering support services for users of MySQL, Percona Server, and MariaDB. Their reputation is sufficient that even the largest business users should not be concerned about the level of support offered.
Who should use MariaDB?
For those who prefer truly open source software, MariaDB is the obvious choice. The foundation model of governance is used by many of the most successful open source communities, and is designed to ensure continuity and stability.
MariaDB is also a great choice for those who needs the features or storage engines it offers. This was what motivated me to switch from Percona Server to MariaDB last year; it was a lot easier to integrate with my Sphinx full-text search server using MariaDB’s built-in SphinxSE storage engine. The inclusion of HandlerSocket is beneficial as well, and they also include a Galera Cluster version for better redundancy.
MariaDB support is provided by SkySQL. They are planning to merge with Monty Program AB (the main sponsor of MariaDB) this summer.
What does the future hold?
The good news is that the future of MySQL is bright. MySQL’s development has historically been driven by a single company, but now Oracle will need to fight to keep ahead of the competition. We’ve already seen the results of that, as performance and scalability in their official MySQL versions have increased tremendously since Percona and MariaDB started gaining traction. And if anything were to happen to Oracle’s MySQL, however unlikely that may be, the community is in a far better position now than ever before to keep MySQL moving forward without missing a beat.
NOTE: Since the article was originally published, my thoughts have changed somewhat. See The potential problems with MySQL forks for my current thoughts on MySQL forks.