The 2 year old MariaDB
One could say that MariaDB now is 2 years old as a packaged product. The latest version, MariaDB 5.3 Beta, is the culmination of many years of hard work. We believe it contains the largest and most significant change to the code of MySQL since the launch of MySQL 5.0. I’m talking about the changes made to the central product component called the Optimizer.
Why did we touch something so central to the product? The fast answer is that the original Optimizer is about 17 years old. Prior to the work we did for MariaDB 5.3, the Optimizer hadn’t had any huge evolutionary improvements or changes in a decade (except for some features that were added in 2003-2005). It was missing basic functionality that one can expect in any 2010s relational database. Things like hash joins or efficient handling of subqueries.
We’ve also wanted to gradually make MariaDB better at handling bigger tables and bigger queries. This requires query plans to have better access locality. Batched Key Access and to some extent hash join give us that. Another important aspect is that there were a vast amount of not-so-good performance related issues with the old optimizer.
An overview of all changes can be found at http://kb.askmonty.org/en/what-is-mariadb-53.
The development of many of the new optimizer features that now appear in MariaDB 5.3 were started in 2006-2008 as part of a future version of MySQL. In MariaDB 5.3 these features were polished and in some cases completely redone.
We also believe this code to be the best tested code ever released in either MySQL or MariaDB. This is important since MySQL is a widely adopted product. We cannot and will not introduce a whole bunch of new bugs in a central component of MariaDB. We could never live with such a product, and no one else could either.
The beta version of MariaDB 5.3 including these changes has now been available for almost two months and we recently released our second beta version. We have been continuing the stabilization of the product during this time with the help of the growing community around MariaDB which has been reporting issues they have found. A huge thanks to all of you!
It will still take a while until we declare 5.3 stable, but all the effort is starting to pay off. In addition to positive end-user feedback we have also seen the first signs of success through early benchmarking tests like these:
– DBT-3 tests,
https://lists.launchpad.net/maria-developers/msg04278.html
– Group commit,
https://www.facebook.com/#!/notes/mysql-at-facebook/group-commit-again/10150261692455933
It should be noted that the Optimizer changes I’ve talked about above are not the only things new in MariaDB 5.3. There are a lot of other improvements and new features as well. Things like the improved Group commit I refer to in the above link and microsecond support that deserves a special mentioning:
– The support for microseconds in TIMESTAMP, DATETIME, and TIME
A feature that has been requested for many years – http://bugs.mysql.com/8523
Lastly, while stabilization work on MariaDB 5.3 continues we’re also working on MariaDB 5.5, which is MariaDB 5.3 merged with MySQL 5.5. This is something the community has been waiting for for a long time. I’m happy to tell you that we’re not far away from a beta of MariaDB 5.5. It’s going to be an interesting end of the year.
Better subquery optimization and hash joins are huge improvements. Great work.
Now, how about a better data caching algorithm?
Better subquery optimization and hash joins are huge improvements. Great work.