MySQL 5.6 vs. MariaDB 10.0

A high-level comparative overview of the features

With the recent GA release of MySQL 5.6, there have been a lot of questions about where MariaDB stands with regards to MySQL 5.6.  SkySQL will of course support both as Patrik explained in his recent blog post, but there are many questions about the technical differences. Rasmus from Monty Program gave a detailed view on MariaDB 10.0 here but I thought it would be beneficial to share a comparison table of the two. MariaDB recently released a benchmark including various versions of both MariaDB and MySQL (as did DmitriK from Oracle), but this post will focus solely on features (not performance). This comparison table is a high level overview with no intention to cover every single feature, only the ones deemed most significant.

I have intentionally left out the threadpool and other features that only exist as closed source features of MySQL, even though they are available in MariaDB as open source features. I have also only selected some of the optimizer features for this list, for a more comprehensive comparison look here.

Some of the MySQL 5.6 features that are not yet in MariaDB are scheduled to go into MariaDB 10.0.2 (the next release of MariaDB 10.0). They are included here in this table and marked as missing in the MariaDB 10.0 column, but with a footnote that they will be in MariaDB 10.0.2 The most notable of these features is the Global Transaction ID (a discussion on the MariaDB implementation can be found in Kristian Nielsen’s blog here and here). There are also other features where the internal implementations differ. I haven’t taken a particular stance on that, but other benchmarks and blogs show any differences.

As always, comments are very welcome. Here is the grid:

  MySQL 5.5 MariaDB 5.5 MySQL 5.6 MariaDB 10.0
Multi-source Replication

NoSQL Cassandra Storage Engine

NoSQL Handlersocket interface

NoSQL memcache interface

Dynamic Columns

Virtual Columns

Join Optimizations

Engine Independent Statistics

SHOW EXPLAIN of a running thread

Explain Improvements

1)

Global Transaction ID

2)

Online Alter Table

2)

Parallel Slave Threads

Partitioning Improvements

InnoDB Improvements

3)

Performance Schema Improvements

>Optimizer Enhancements

Binlog Group Commit

Disk Access Optimizations

Subquery Optimizations

Microseconds Precision

  1. All improvements, except JSON output will be available in MariaDB 10.0.2
  2. Will be available in MariaDB 10.0.2
  3. All improvements, except FULLTEXT indexes are already available. FULLTEXT indexes will be available in MariaDB 10.0.2

Max is the creator of the original MySQL training program at MySQL AB. He is a co-founder of SkySQL and now manages the training department with the aim to help advance the MySQL ecosystem around the world.

Join the conversation LinkedIn

Anonymous (not verified)

+1 on GA vs. Alpha

This is just silly. Unless SkySQL is truly recommending it to their customers for production use, then by all means go ahead but I would expect SkySQL to stand by it good or bad?

Massimo Brignoli (not verified)

Is silly to confuse

Is silly to confuse recommendations with a features roadmap. This is showing just the roadmap of development of the 2 products. If you have any details of the MySQL 5.7, would be great to add them.

In addiction, this is also showing the great work has been done in the MySQL 5.6 release.

ps: SkySQL is agnostic, since we sell support on both.

Max Mether

Silliness?

Again, the blog post does not make any recommendations at all, it just compares feature lists. It is doing it because customers have asked about it. 

Giuseppe Maxia (not verified)

What about crash safe tables?

In MySQL 5.6, there are new tables where the status of replication is stored.
While I have seen these tables in MariaDb 10.0, I could not find any way of enabling them. Is this feature supported? If not, does MariaDb plan to offer a similar functionality?

Massimo Brignoli (not verified)

good point Giuseppe. I think

good point Giuseppe. I think we must check with MariaDB team.

Giuseppe Maxia (not verified)

How can you compare an alpha version to a GA release?

As far as I can tell, MariaDB 10.0 is still aplha, so much alpha that the multi-source replication is not feature complete (try listing relay-log events with multi-source enabled).
So, what's the purpose of comparing it to more mature releases?
Surely you are not recommending that anyone uses MariaDB 10 in production.

svar (not verified)

Technically speaking it exist

Technically speaking it exist less risk using MariaDB 10 against 5.6 where most of the code has been already been tested inside MariaDB 5.2 and 5.3 and 5.5 and InnoDB is the same :) This only reflect my opinion and not an official SkySQL representative

Max Mether

Recommendations?

I am not recommending anything, the blog was was purely about generic feature list comparisons. I purposfully left out all discussions about the maturity or performance of the features, someone else can tackle that. We have been asked for such a comparison from our customers so I thought it made sense. 

Bart (not verified)

Why is there an X for "Join

Why is there an X for "Join optimizations" in MySQL 5.6?

It sure does contain optimizations in that area:

http://oysteing.blogspot.de/2011/10/bacthed-key-access-speeds-up-disk-bo...
http://dev.mysql.com/doc/refman/5.6/en/mysql-nutshell.htmlhttp://oystein...

Any reason why you only linked to the MariaDB benchmarks, but not to the ones from DmitriK?

Max Mether

Join Optimizations

They "Join Optimizations" row was based on the comparison table found  here: /https://kb.askmonty.org/en/optimizer-feature-comparison-matrix/

I believe this is put together by Timour. 

Regarding Dmitri's benchmark I didn't see his benchmark on MariaDB until after I had published the blog, so I just added it in the parenthesis.