MySQL versions make interesting and at times confusing reading. Here's a list of the version soup.
- Version 5.2 was re-branded as version 6.0.
- Version 6.0 was then cancelled.
- Version 5.4 then replaced version 6.0.
- Version 5.4 was then re-branded as version 5.5.
- MySQL NDB cluster comes with it's own versioning system. As of this writing 7.2 is the latest release.
- Innodb, the most used engine in MySQL now has it's own versioning. MySQL 5.0 had Innodb version 1.0.xx and MySQL 5.5 has innodb version 1.1.xx.
- MySQL 5.6 will be the next release from MySQL(Oracle). For a full feature list see http://dev.mysql.com/tech-resources/articles/whats-new-in-mysql-5.6.html
Forks and Patches
On top of this there are quite a few forks and patches.
- Drizzle was a fork of MySQL 6.0. Drizzle is probably the only true fork, has fully re-factored code and, is in active development.
- MariaDB is a release driven by Michael "Monty" Widenius, the original author of MySQL. MySQL 5.1 was the basis for MariaDB and as of this writing the latest version is Maria DB 5.5.
- Percona has several patches for both MySQL 5.1 and MySQL 5.5. Percona patches are a re-base of the main release and XtraDB is a re-base of InnoDB. Both Percona Server and XtraDB is also not a true forks of MySQL or Innodb. They have some very good performance & monitoring enhancements.
- Facebook also releases patches for MySQL. These are done for specific Facebook requirements but as is often the case some of these patches eventually find their way into main releases. These can be found at https://www.facebook.com/MySQLatFacebook
- OurDelta is another set of patches released by former MySQL employee Arjen Lentz. This is now more aligned with MariaDB. These patches are similar to the Percona ones in terms of adding extra functionality to existing releases.
3rd Party Storage Engines
Outside of InnoDB and MyISAM, there are few 3rd party plugins that suit specific needs as well.
- TokuDB - A transactional engine which is available as a plugin. It provides some improvements for large databases or write heavy environments. More at http://www.tokutek.com/products/tokudb-for-mysql/
- PBXT - A transactional engine like InnoDB and fully ACID compliant. It has not had much maintenance in the past 2 years and so is close to being defunct.
- InfiniDB - Open source engine by Calpont is suited for data warehousing and read-intensive applications. More at http://infinidb.org/about-us/infinidb
- Infobright - Infobright engine for MySQL is another one aimed at date warehousing and large datasets. More at http://www.infobright.com/Products/MySQL-Integration/
Selecting the right one
- For most part, staying with the Oracle releases will suit most application needs. These releases are in active development, generally stable and have binary versions for most systems.
- MariaDB is binary compatible with MySQL and may suit certain needs. It also includes XtraDB from Percona. For a good comparison and the various incompatibilities, refer to http://kb.askmonty.org/en/mariadb-versus-mysql/
- Going with a fork like Drizzle will likely require some application change. Drizzle does not maintain server level compatibility but does talk the MySQL protocol. For a full list of differences refer to http://docs.drizzle.org/mysql_differences.html
- The Percona patches and versions provide a more seamless migration as they are generally fully compatible with the MySQL releases. If you are concerned about vendor support , Percona also provides that. Percona toolkit (formerly MaatKit) is a good addition as it provides some nice tools to automate a variety of tasks. This toolkit can be used with any MySQL release and so you don't need to run Percona server.
- The 3rd party engines come into a play only if are looking for specific features that come with the engines.
Links & further reading
- MySQL 5.6 features - http://dev.mysql.com/tech-resources/articles/whats-new-in-mysql-5.6.html
- MariaDB Information - http://kb.askmonty.org/en/mariadb/
- OurDelta Homepage - http://ourdelta.org/
- Drizzle differences - http://docs.drizzle.org/mysql_differences.html
- Percona server - http://www.percona.com/software/percona-server/