MySQL 5.1 - Pssst! The secret is out!

MySQL 5.1 went GA (Generally Available) recently. Can I let you in on a secret? Promise you won't tell anyone? The MySQL.com websites have been using 5.1 for 18 months now. It is a little known fact that quite often before even beta testers get hold of our software that little bunch of anarchists that is the web team get their grubby paws on it. But we aren't the only ones. In fact there were over 2 million downloads of 5.1 before it went GA. And 11 point releases.

Why do we do this? Well for one thing the web team is like any team of highly motivated, intelligent computer geeks and we love new toys. More than that we like to try and break them. But we are also responsible and don't like software that breaks and brings our websites down. It is a delicate balancing act, but one which we are committed to in order to
improve the product and as a side benefit get to play with all the new features.

MySQL depends a lot on its web sites. The community depends a lot on the MySQL web sites. With 20 million page views per month and more than 3.5 million unique visitors each month we aren't talking about a small site either. If we expect people to use our product with confidence, we have to be confident in our products. What better way to instil confidence than to use our products in our own mission-critical applications. This has proven to be of immense benefit providing feedback to the development team and helping them to build a quality product.

The web team is currently responsible for nine servers running MySQL 5.1, some of which are production servers, some for reporting, and some for staging sites. In production we have a master server to handle all the write traffic and three slaves that handle read requests from the web servers. In our testing we have found that getting the best performance out of our site is more dependent upon the number of slaves available than the number of web front ends (we currently use three apache servers to handle the web requests). It doesn't matter how well performing your web server is and how many concurrent connections it can handle if each of these connections cannot get data back from the database. So replication and scale-out are important for us, and it is no surprise that the web team has logged bugs on replication, and had them fixed.

Enterprise Monitor graph of MySQL.com database activity

Another feature that I personally am excited about is the new MySQL Query Analyzer, available as part of the MySQL Enterprise offering. This is another area that the web team has been very active in providing feedback and suggestions, and anyone who needs to manage more than one or two servers is really going to find Query Analyzer invaluable. Query Analyzer has allowed us to improve performance of some of our core queries by orders of magnitude (link to previous blog post on quan). Its simple interface and defaults aimed at highlighting performance issues makes it very easy to use and understand.

Quan showing query overlay

None of this work stops with 5.1 going GA either. There are always constant improvements to stability, performance and security that are being built into the products and you can be assured that the web team will thrash them out on the MySQL.com websites to make sure they are ready for the enterprise.

1 comment

Comment from: Eric Herman [Visitor]
Eric HermanSome of the developers of the MySQL Enterprise Monitor have been running 5.1 for a year or more. For us this had more to do with validating that we were ready than validating the mysqld -- for our uses, the 5.1 mysqld been solid for a long time. Me? I switch around, and even play with 6.x sometimes; speaking of, I need to give 6.0.8-alpha a whirl ....
19/01/09 @ 18:33

Leave a comment


Your email address will not be revealed on this site.

Your URL will be displayed.
(Line breaks become <br />)
(Name, email & website)
(Allow users to contact you through a message form (your email will not be revealed.)
This is a captcha-picture. It is used to prevent mass-access by robots.
Please enter the characters from the image above. (case insensitive)