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.

Ben Forta, the author of MySQL Crash Course and Sams Teach Yourself SQL in 10 Minutes, has written what I believe is the first MariaDB-specific book: MariaDB Crash Course. I just received word from Ben that the book is now shipping.

Most MySQL books can, of course, be used to learn almost everything you need to know about using MariaDB. But with all of the features and abilities MariaDB has gained in the MariaDB 5.2 and MariaDB 5.3 releases, it’s nice there is now a book specific to MariaDB.

You don’t need to know anything about MariaDB or MySQL in order to get the most out of this book. From the author’s website:


This is a beginner-intermediate book, and is not intended for SQL (including MySQL) experts. This book is for you if:

  • You are new to SQL.
  • You are just getting started with MariaDB and want to hit the ground running.
  • You want to quickly learn how to get the most out of MariaDB.
  • You want to learn how to use MariaDB in your own application development.
  • You want to be productive quickly and easily using MariaDB without having to call someone for help.
  • If you want to invest minimal time (and cost) for a crash course on one of the most important DBMSs out there, then this book is indeed for you.

The book is available from Amazon.com and other fine booksellers.

Enjoy!

 

There are many new features in MariaDB 5.3. I’m looking forward to many of them, but one of the ones I’m most excited about is Progress Reporting.

It’s a fact of life in the database world that some commands take longer to run than others. Commands like ALTER TABLE, LOAD DATA INFILE, and adding and dropping an index simply take time to run, depending (of course) on your data and schema. I always have hated having to wait for those commands to run with no indication of how much progress has been made or how much is left to do. All of that changes with the upcoming release of MariaDB 5.3.

In MariaDB 5.3 there is a new “Progress” column in the output of SHOW PROCESSLIST (this can be turned off) which shows the progress, and there are three new columns (STAGE, MAX_STAGE, and PROGRESS_DONE) in INFORMATION_SCHEMA.PROCESSLIST which allow you to see which process stage you are in, the number of stages, and how much of the current stage is completed. Additionally, the mysqld server sends progress reports to clients at a specified interval (the default is every 5 seconds, 0 will disable it). In the MariaDB 5.3 mysql command-line client, these progress reports look like this:

Currently, the following commands can send progress report messages to the client:

  • ALTER TABLE
  • ADD INDEX
  • DROP INDEX
  • LOAD DATA INFILE (not LOAD DATA LOCAL INFILE, as in that case we don’t know the size of the file).

Some Aria storage engine operations also support progress messages:

  • CHECK TABLE
  • REPAIR TABLE
  • ANALYZE TABLE
  • OPTIMIZE TABLE

Third-party clients and storage engines can easily add support for receiving and sending (respectively) these progress reports. Details are on the Progress Reporting page in the AskMonty Knowledgebase. One application which has been updated to support progress reports (in addition to the MariaDB mysql command-line client) is the ‘mytop‘ program, which will be included in source and binary packages of MariaDB 5.3.

Progress reporting doesn’t speed up ALTER TABLE or any of the other supported commands, but at least I now have some visibility into them, and that is “a very good thing”.