With MySQL 5 now widely available, the MySQL founder weighs in on the competition, the future of the MySQL database, and how to manage contributed code. Here’s ten questions with the co-founder and CTO of MySQL AB.
This interview is part of our December 2005 coverage of the release of MySQL 5.The December 2005 issue of Linux Magazine is now on newsstands everywhere. The magazine presents an exclusive interview with MySQL AB CEO Marten Mickos and a hands-on introduction to many of the enterprise features of MySQL 5.
Linux Magazine: With the release of 5.x, does MySQL AB plans to compete more directly with products like Oracle and DB2, or do you see MySQL 5 as filling a different niche and being a complimentary database solution? How will those competitors view MySQL 5? Compliment or competition?
Monty Widenius: MySQL started originally with a limited feature set designed to solve practical problems within the datawarehousing and web space. The main requirements then were performance, stability and ease of use. This came from the fact that if MySQL didn’t perform or if there were any problems I myself would have to wait longer for batches to complete or spend the rest of the night fixing things that broke.
Gradually, we increased functionality, as demanded by our customers and users, but without compromising the above values. (After all, it was still me who handled a major part of the support and the less problems there were, the more sleep I got.:)
It was our ambition from the very start to build a general purpose database, but to do this based on practical need based on active communication with our users.
With MySQL 5.0, we have addressed the most frequent requests from the advanced MySQL users. This means that we are now a “good enough” solution for a larger share of the world’s database applications than ever before.
Still, other databases have many features that we don’t. We are still a complement to them, although we of course do compete for individual projects where other databases are overkill or we have a more compelling license.
Linux Magazine: In our previous interview (see http://www.linux-mag.com/content/view/1388/2209/), you mentioned that the Oracle database was overkill, comparing it to the overly complex and bloated Microsoft Word. However, what desirable Oracle– or other database– features are still needed in MySQL?
Monty Widenius: Oracle has a lot more performance indicators than MySQL (which makes it easier to tune Oracle for different kinds of load). We want to extend the status information and tuning parameters in MySQL to allow advanced users to do similar things with MySQL.
Partition is also a nice feature that exists in other databases and we are working on having our own partition solution. (First version of this will be in 5.1)
Advanced replication with better conflict resolution and federated tables to other databases are also on the roadmap.
And of course, we are always working on making MySQL even faster for a an even broader set of cases.
Linux Magazine: What top three or five challenges should established MySQL end-users expect to face as they migrate to MySQL 5?
Monty Widenius: We have tried to keep MySQL 5.0 as backward compatible as possible but as we fix compliance problems with the ANSI standard we have created a couple of issues for some end users.
In most cases you can just take your old application and start using 5.0 and things should “just work as usual,” but there are a couple of exceptions:
*We had to change the sorting order for a couple of field types/ character sets. This can be avoided/detected by dumping your data in the older MySQL version and restoring it in MySQL 5.0 or run the command CHECK TABLE+RESTORE TABLE for the old tables before starting to use them in 5.0- The order we join tables when you use braces in JOIN has changed to follow the ANSI standard (before it was always from left to right), which may confuse some old users.
In general, as long as users do read the upgrade to 5.0 section in the MySQL manual, they should be fine.
The other problem when upgrading to 5.0 is that you need to decide which of the new features to use to make your life easier when deciding to write applications. This can be a big problem as 5.0 has so many new usable features!
Linux Magazine: One of the most exciting features you envisioned in our last interview was support for scripting languages in stored procedures. For example, as you mentioned, a developer could write stored procedures in PHP instead of ANSI SQL. How is that effort coming along?
Monty Widenius: In 5.0 we put all our focus on making an, almost, complete implementation of the standard ANSI SQL language and we did not have time to start on making an API to enable others to link in “any” language for storage procedures.
Now that we have a decent implementation of the ANSI SQL language we can finally concentrate more efforts into making an API for other languages. I hope we can have something to offer in this area in 5.2.
Linux Magazine: What about the effort to make MySQL even easier to deploy? That was another goal you mentioned, and it seems like a worthwhile goal to constantly strive for.
Monty Widenius: We have improved the Windows installation scripts, and we have coded an Instance Manager that allows you to start and stop remote MySQL servers easily.
You can now typically install MySQL on Windows or Linux within 15 seconds, which is not a bad achievement.
Going forward we are going to pack some of the MySQL connectors and GUI tools into the same installation package as the server to make life even easier.
Linux Magazine: Can you tell us a little about how contributed code flows back into the MySQL source code?
Monty Widenius: Code contributions are treated the same way as code developed in-house. We review each contribution strictly, and will not consider employing it until it reaches the same standard (quality, bug free, coding style etc) as the rest of the server code. In some cases, we request the contributor to do this, but for some really critical or interesting pieces we may ourselves do the corrections. In the process, the contributor needs to give MySQL a “shared” copyright to the code (which means that we are free to use it any way we want and the contributor has similar rights), very similar to what FSF does.
Usually, before submitting contributions, developers hang out a while on the
email@example.com mailing list where we try to mentor and support contributors.
The major reason people want to contribute code to us (or actually to any open source project) is because they are lazy. They want to fix something in MySQL that clashes with their own needs but they don’t want to have to patch every MySQL version with their fix/extension. It’s much easier to just give us the patch and have it included into the standard MySQL distribution and get rid of the problem. There are also some developers who give us patches because they want to be listed in our contributed MySQL session or just because they want to help their fellow MySQL users (on the MySQL lists/forums).
Linux Magazine: There was quite a stir upon the announcement that Innobase had been acquired by Oracle. Can you update our readers about the disposition of InnoDB support?
Monty Widenius: InnoDB continues to be supported just like before. We get third level support from Heikki, Marko, and the other Innobase guys as we have in the past, and we are also getting good at solving hard InnoDB issues ourselves. As InnoDB is open source through the GPL, all MySQL open source users will be able to use InnoDB as before for the foreseeable future.
Linux Magazine: Can you describe any deployments of MySQL that really push its limits?
Monty Widenius: I’m aware of several deployments of MySQL where we are in or close to the petabyte[ a thousand terabytes or a million gigabytes] limit. We also have transactional environments with several thousand transactions a second, and these come both as single-server MySQL installations, as MySQL replication and recently with MySQL Cluster.
We have on our web site a huge list of companies that depend on MySQL for their 24/7 hour operations and includes names such as Google, Yahoo, Sabre, Cox Communications, and the Sanger Institute.
In MySQL 5.0, we have done a lot of changes based on testing from our SAP integration team in Walldorf, where they benchmark and stress test MySQL to its limits. The tests include tests for syntax, code complexity, number of simultaneous users, number of transactions, and database size. As far as I know, we are now passing these tests just fine.
Linux Magazine: MySQL database optimization still seems like a black art. Are there any plans to build a diagnostic tool for MySQL that helps users tune the database more interactively?
Monty Widenius: This is something we aim to address in future versions of the MySQL Network. Here, we are going into more service oriented offerings, so some of this will be targeted mainly for our commercial customers.
The classic GUI tools already do a lot of monitoring, but for the commercial offering, we are looking at rules and recipes that can be applied in order to automate the ‘black art’ you mentioned. We aim to make Network so good that any DBA will not want to be without it.
On the server side we plan to add more statistics collection to allow one to have an even better understanding of what the MySQL server is doing.
Linux Magazine: What is next for MySQL? What lies ahead for 5.1? 6.0?
Monty Widenius: Right now I am in Athens, Greece, to discuss this with the leaders of the MySQL Development team. We’re looking at stuff like partitioning, further storage engines (5.0 already has a couple of new ones!), pluggability of storage engines and further performance improvement.
We are also looking at row-based replication, faster subqueries, data auditing, and making the MySQL Cluster more general-purpose. Some of this, like partitioning and Cluster improvements, are actually already coded to an alpha level.
The release after MySQL 5.1 will likely be labeled 5.2.
Martin Streicher is the Editor-in-Chief of Linux Magazine. Monty Widenius is the co-founder and CTO of MySQL AB, the company that produces MySQL.