One thing which we, as developers of MariaDB, run into is that our personal database needs are not the same as many of our users. In fact, our needs are quite light compared to many. We have a MariaDB website, a company website, a knowledgebase, this blog, and that’s about it. None of them are particularly high traffic compared to what our customers have. But apart from talking to our customers, which are just a small percentage of the total MariaDB population, we wanted to have a way of finding out how MariaDB is used “in the real world”, so to speak.

Asking lots and lots of people to fill out surveys isn’t any fun, and we would have to keep repeating the survey ad nauseum to get useful information over time on trends and such. So many years ago (around 2003 or 2004), we came up with an idea of implementing a “phone home” feature in MySQL. It had an unfortunate fate — everyone agreed that we needed it, but, apparently, there was never a good time for implementing it. And we — in MySQL — kept on developing the features that we supposed you might want, without the statistics that would help us know what you actually needed.

But we can stop guessing now. Let me announce the User Feedback plugin, it’s included in the just-released MariaDB 5.3.2-beta. This plugin is disabled by default, but we hope many of you will enable it. The statistics gathered will help us determine where to focus our development efforts and we think they will prove beneficial, or at least interesting, to everyone else. (What? You thought we were going to keep all of the information to ourselves?)

More information on the plugin can be found at http://kb.askmonty.org/en/user-feedback-plugin and some nice charts will eventually be available for your viewing pleasure at: http://mariadb.org/feedback_plugin/. I say eventually because if you go there now, there’s not much to look at, what with the plugin being just released and all.

The statistics gathered include things like buffer sizes, CPU architecture, OS, kernel version, what plugins are enabled, how much memory is installed, and so on. The statistics are all anonymous and contain no sensitive or private information. The information is collected into the information_schema.feedback table (and if you have the plugin enabled you can see what has been collected with a simple SELECT * FROM information_schema.feedback query). Once enabled, the Feedback plugin will automatically send a report a few minutes after startup and then once a week. Submitting is done via an HTTP POST (just like a web form).

Even if you choose not to submit anonymous statistics to mariadb.org, you may still find the plugin useful, especially if you run many instances of MariaDB. You see, the URL the plugin POSTs to is configurable. The default is to post to mariadb.org, but you can easily change it to POST to your own server, or to your own server and mariadb.org (you can configure multiple URLs).

For paranoid folks out there (and a good DBA should be a little bit paranoid) we have provided many different ways to ensure that the plugin only sends what we say it does — anonymous usage statistics. You can configure multiple report URLs, can see the HTTP traffic with a network sniffer, and can even submit the data manually using a web browser if you so choose.

Full details on configuring the plugin, and how to enable it, are available at http://kb.askmonty.org/en/user-feedback-plugin.

So, if you’ve ever wanted to help out with MariaDB, but just couldn’t think of anything, here’s something that everyone who runs MariaDB can do without breaking a sweat. Help us help you by enabling the User Feedback plugin!

Thanks.

I just updated to Ubuntu 11.10 “Oneiric” on one of my desktops and I ran into an issue with MariaDB.

It’s not an issue with MariaDB itself, more in how the MariaDB “Natty” .deb packages are configured. We haven’t released .deb packages for Ubuntu 11.10 “Oneiric”, but the Natty packages work fine, apart from this one configuration issue (and when we do release “Oneiric” packages, they will work out-of-the-box).

The main problem is that some things have moved around in “Oneiric” and Apparmor doesn’t like the MariaDB “Natty” Apparmor defaults file because it doesn’t account for some of the new destinations. Specifically, /var/run has been moved to /run (a discussion of the rationale behind the move can be found here). Other things have been moved too, but the /var/run to /run move is the one that is causing trouble.

I searched launchpad and found bug #810270 which talks about the move and some of the packages, including MySQL, which needed to be updated. So for the version of MySQL in the official Ubuntu repositories, things are fixed. To fix things on my local machine I took a look at Ubuntu’s MySQL apparmor-profile file and saw four differences between it and my local /etc/apparmor.d/usr.sbin.mysqld file:

  1. /etc/mysql/my.cnf r,” was changed to “/etc/mysql/*.cnf r,
  2. /var/run/mysqld/mysqld.pid w,” was changed to “/{,var/}run/mysqld/mysqld.pid w,
  3. /var/run/mysqld/mysqld.sock w,” was changed to “/{,var/}run/mysqld/mysqld.sock w,
  4. /usr/lib/mysql/plugin/ r,” was added

After making the above changes everything appears to be OK. Official MariaDB .deb packages for Ubuntu 11.10 “Oneiric” are coming, but until they arrive, I can at least continue to use the old MariaDB “Natty” packages.

Let me know in the comments if you’ve run into any other issues trying to run, install, or upgrade the MariaDB “Natty” packages on “Oneiric”. Thanks!

P.S. I don’t think I will ever get used to writing “Oneiric”. It’s just such an awkward word. Whatever happened to ‘i’ before ‘e’ except after ‘c’?

**Update 2 Nov 2011** We’ve updated our MariaDB 5.2.9 packages with a fix for the Oneiric upgrade issue (and we have added real Oneiric packages). What we’ve decided to do is remove the apparmor profile we ship with MariaDB. If you’ve customized your profile like above, when you update to the new version (the only change is to the apparmor profile) you will be prompted to keep your existing profile our use our (empty) profile. It is safe to use our empty profile. If you haven’t customized your profile then the update will remove the old apparmor profile.

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.