Relational database management systems (RDBMSs) aren’t the sort of thing to get most folk out of bed in the morning – unless, of course, you happen to think they’re one of the most brilliant concepts ever dreamed up.
These days you can’t sneeze without someone turning it into a table value in a database somewhere - and in combination with the freely available Linux operating system, there’s no end to them.
Most Linux distros make it almost trivial to add popular DBMSs to your system, such as MySQL and MariaDB, by bundling them in for free in their online app stores. But how do you tell which combination - which Linux distro and which DBMS - will give you the best performance?
This week we've revved up the Labs servers to ask the question: what level of performance do you get from OS repository-sourced DBMSs?
What's at stake
According to market analysts IDC, Linux accounted for 28.5 percent of all server revenue at the close of 2013. It doesn't surprise anyone that Linux is popular - low support costs and high stability are what Linux is known for. But it is surprising just how many dollars it rakes in - IDC estimates Linux generated $US14.1 billion last year in hardware revenue alone.
When it comes to Linux software, there’s no shortage of options here, either, with numerous enterprise-class Linux server distros available, many with licensed commercial support. You can go a step further and find a similar situation for relational database management systems (RDBMSs), with plenty of commercial support on offer.
But as popular as the ‘payware’ options are, freely available ‘community’ releases of Linux have a massive following, thanks in part to their app repositories and their few-strings-attached usage. The distros and DBMSs alike benefit from the highly knowledgeable communities that keep these endeavours buzzing.
The Linux distro and DBMS is an important pairing that deliver the first half of the LAMP stack (Linux, Apache, MySQL, PHP) - and perhaps the most popular applications for Linux. In fact, the availability of a community-release DBMS – sometimes, more than one – inside an official OS repository makes setting up this half-stack seem almost trivial.
Yet with multiple combinations of distros and community-release DBMSs to choose from, do they all provide the same level of performance or does one combination rise to the top of the leaderboard?
How we tested
To find out, we ran a series of tests using the latest releases of three popular ‘community’ Linux server distros – Debian 7.6.0, Ubuntu Server 14.04.1 LTS and CentOS 7.0 – and tested out the major DBMSs available in each OS repository:
- CentOS 7.0 – MariaDB 5.5.37
- Debian 7.6.0 – MySQL 5.5.38
- Ubuntu 14.04.1 LTS – MySQL 5.5.38, MySQL 5.6.19, MariaDB 5.5.37
The demarcation lines between MySQL and MariaDB have been well drawn over the last few years, so we won’t go over the backstory again now, other than to say MariaDB is a fork of MySQL and a ready drop-in replacement.
MariaDB is also starting to take wins from its genetic source, with Red Hat-affiliate CentOS swapping from MySQL in CentOS 6.5 to MariaDB 5.5.37 in CentOS 7.0. Meanwhile, Red Hat-rival Canonical has taken the ‘more is better’ approach with its latest Ubuntu 14.04.1 LTS release, including both MariaDB and MySQL options in its online app warehouse.
Each Linux distro was installed onto our iTnews Labs’ HP ProLiant DL380p Gen8 server with its twin eight-core 2GHz Intel Xeon E5-2650 CPUs and 32GB of RAM, combined with VMware’s free vSphere hypervisor as a series of virtual machines (VMs). The one notable limitation of vSphere is its maximum of eight virtual CPUs (vCPUs) per VM, but this all served to provide us with a practical ‘real-world’ test platform.
We benchmarked the performance of each DBMS using Sysbench 0.5, a more recent update to the standard 0.4.12 version found in some repositories. It comes with new features including support for Lua scripting and interval reporting.
We created identical 2GB databases for each VM, consisting of eight tables and one million records per table. Each VM was allocated 8GB of RAM, ensuring the database could run from within RAM and taking disk I/O out of the performance equation wherever possible.
Using Sysbench, each VM was loaded up with binary-incremented concurrent thread requests to see how the DBMS scaled with demand. To ensure consistency, we also implemented CPU pinning via taskset to lock the Sysbench app to two CPU cores only, leaving the remaining six fully available to run the DBMS. Each VM also ran alone on the DL380p server.
A key feature of OS repository-sourced DBMSs is they’re incredibly easy to install. So for this reason, we initially didn’t apply any performance tweaks to the DBMS configuration files – we simply used the default installation as provided by the OS repository to give you a guide of what’s available straight out of the box.
(If that sounds a bit simplistic, former Oracle MySQL principle support engineer Arnaud Adant, presenting at 2013’s MySQL Connect conference, pulled up a slide with the surprising stat that 90 percent of MySQL customers use a single disk for their DBMS setups.)
Despite our intentions, the results soon had us changing our minds, however.
Read on for results...