A software developer may use a relational database management system (RDBMS) to create, read, update, and delete back-end data. Developers can also work with and change these systems with custom SQL statements. However, there are several RDBMS to choose from, with each one designed with particular use cases in mind and differing in their features, pricing, and performance.
No matter which RDBMS you decide to work with, monitoring performance is an indispensable part of ensuring its functionality, reliability, and availability. In this guide, I’ll go through four of the major RDBMS types: Amazon RDS, Amazon Aurora, MySQL, and SQL Server. Following an overview of each, I’ll compare their performance and pricing. I’ll also look at the use of software like SolarWinds® Database Performance Analyzer to monitor the performance of your databases to help you decide which relational database may be best for your situation.
Common Relational Database Types
- Amazon RDS: Amazon RDS is a managed relational database service, which can help take stress out of all the management tasks you might have to deal with otherwise. It’s easy to work with and provides more flexibility than you’d have if you were managing your own servers. For example, instead of bundling CPU, memory, storage, and throughput as in a typical server, Amazon RDS allows you to scale each of these features independently and allocate them as necessary. It also includes tools to create backups, carry out software patching processes, and set up automatic failure detection and recovery.
- Amazon Aurora: The fundamental building block of Amazon RDS is called the “DB instance.” A DB instance is a database environment in the cloud, and it can contain multiple databases. Each DB instance runs a DB engine, and with Amazon RDS you can choose between various DB engines, including Aurora.
Both RDS and Aurora are accessed through Amazon Web Services (AWS), but they have slightly different intended uses. Essentially, the AWS Aurora database is a custom engine for Amazon RDS and is optimized for performance in the cloud.
Aurora is compatible with both MySQL and PostgreSQL, and is intended to combine the availability and performance of traditional database engines with the cost-effectiveness and straightforwardness of open source. Considering Aurora vs. RDS, RDS can be used with a variety of engines, while Aurora is a special engine developed for use with RDS.
- MySQL: MySQL is a widely used RDBMS. It comes in two forms: the open-source version (MySQL Community Server) and the proprietary version (Enterprise Server), owned by Oracle. Anyone can download the open-source MySQL software and use it without paying anything. It’s highly suitable for accessing databases online and was developed to handle large databases much faster than other solutions from around the same time. It’s most commonly used for web applications and online publishing.
- SQL Server: SQL Server is an RDBMS developed by Microsoft. For a long time, it was only available on Windows, but it’s now available for Linux. Depending on your needs and budget, you can choose between several editions of SQL Server, including Enterprise, Standard, and Developer editions.
Performance and Feature Comparison
Amazon Aurora vs. RDS
The main benefits of Amazon RDS are its preconfigured parameters, automatic software patching capabilities, and robust tools for monitoring and metrics.
As a custom engine for RDS, Amazon Aurora has additional features to make it faster and more modern. Aurora has high throughput, storage auto-scaling, and a self-healing, fault-tolerant storage system. It also provides point-in-time recovery and continuous backup, with replication across three availability zones keeping your data secure. Aurora vs. RDS performance depends on which engine you use with RDS, as some of them are not optimized for speed but for availability, or to fit in with existing code.
Aurora vs. MySQL and SQL Server
Looking at Aurora vs. MySQL, Aurora is intended for performance with cloud servers, while MySQL is designed to run on physical machines, and may not be optimized for virtual machine performance. As a result, Amazon Aurora vs. MySQL performance will be affected by the nature of the machines the system is running on—physical or virtual. Amazon asserts Aurora is five times faster than standard MySQL databases and three times faster than PostgreSQL databases when used in the cloud. A comparison of Amazon Aurora vs. SQL Server yields similar findings, since SQL Server, like MySQL, is designed to be used on-premises.
MySQL vs. SQL Server
Prior to 2016, MySQL and SQL Server were differentiated by the number of platforms they could be used on: MySQL was available on multiple platforms, while SQL Server could only be used on Windows. Today, SQL Server is available on Linux as well. The design of these RDBMSs to be compatible with multiple platforms makes them versatile and flexible, where Amazon Aurora is only designed for use with RDS. This means SQL Server and MySQL developers sometimes make sacrifices in performance for the sake of compatibility.
One of the primary benefits of using MySQL is it’s open source, meaning you can modify the source code however you like. Furthermore, MySQL has been used for a long time, so there is a lot of support available, including abundant resources for developer use. MySQL supports multiple storage engines, including InnoDB, CSV, and NDB. If you use the InnoDB engine with MySQL, it won’t be as fast as the other engines, as InnoDB was designed for availability, not speed. MySQL is written in C and C++ and can be used on Windows, Mac, Unix, and Linux. For security purposes, MySQL uses a system of access privileges and encrypted passwords, which enables verification to be performed in a host-based system.
In contrast to MySQL, SQL Server only has one storage engine, which makes it a bit less flexible.
One of the differences between MySQL and SQL Server concerns the languages they support. While they both support C++, Delphi, Go, Java, PHP, Python, R, Ruby, and Visual Basic, MySQL also supports Eiffel, Haskell, Perl, Scheme, and Tcl. This broader programming language support contributes to MySQL’s popularity.
Another difference has to do with filtering capability. MySQL requires the filtering out of users, tables, or rows per individual database, which means developers often have to run multiple queries. With SQL Server, you can use row-based filtering, which means you can filter multiple rows without needing to consider the number of databases.
Finally, SQL Server includes data performance analytics and reporting tools, such as SQL Server Reporting Services, which can be downloaded for free. MySQL offers similar tools, like Crystal Reports and Actuate BIRT. You can also use third-party tools to monitor performance, as we’ll discuss below.
How to Monitor Relational Database Performance
Monitoring is an essential part of maintaining the reliability and performance of your database management system. You should ensure you’re continuously collecting data from your database solution, so you can debug problems as soon as they arise. It’s also important to have a clear monitoring plan in place, so you can keep your RDBMS performing up to standard. Think carefully about which resources you’ll monitor and in how much detail, as well as how frequently you’ll conduct a system check.
As part of your monitoring plan, make sure you have a clear pathway of escalation, so your business colleagues and clients know who to talk to if an issue arises. Also ensure appropriate alerts are set up, and the appropriate people are notified if something goes wrong.
A good monitoring tool is key to maintaining database health. If you’re monitoring multiple databases, you’ll want to look for a monitoring tool capable of reporting on all of them, so you don’t have to switch between programs to get an overall picture of performance. For a high-quality database performance analyzer you can use with RDS, Aurora, MySQL, and SQL Server, I recommend SolarWinds Database Performance Analyzer (DPA).
DPA is designed for performance monitoring, analysis, and tuning, and can work to determine a clear performance picture as well as facilitate troubleshooting. It also works with historical data to help you see where performance is headed and how your system is trending. It uses machine learning processes to detect anomalies, so you’re alerted to database performance or security issues as soon as something unusual occurs. With DPA, you can also analyze your RDS, Aurora, MySQL, and SQL Server instances and compare performance metrics.
Once you have your analyzer set up, test each database under normal performance conditions, as well as at various times and under different loads. Consider storing historical monitoring data for a set time so you can get a decent snapshot of how one database is performing before comparing it to the others.
Relational Database Pricing Comparison
The different instances offered by RDS are priced depending on which features you want, which region you live in, where you transfer data to and from, and which version or edition of the instance you are using. The pricing for Aurora, below, is similar to the pricing structure of all the other RDS engines.
Amazon Aurora is a pay-as-you-go service with no upfront fees. It has two different pricing structures, depending on whether you use the MySQL-compatible edition or the PostgreSQL-compatible edition. For both editions, two types of instances are available: standard instances and memory-optimized instances.
Storage consumed by your database is billed per month on a per-GB basis. I/Os are also billed per month, in “per million request” increments. You can also pay for the Aurora Global Database, which costs approximately $0.2 per million replicated write I/Os. This feature provides low-latency global reads and disaster recovery. With the Global Database, instances, storage, data transfer, backup, and backtracking functions are all charged at standard rates, while the backup fee is charged per GB per month. The fees associated with Aurora vary depending on where you’re located.
With the MySQL-compatible version of Aurora, users can opt to pay separately for the Backtrack feature. This allows you to quickly shift back to a previous Aurora database without needing to restore data from a backup. The Backtrack feature is priced per one million change records.
All data transferred into the Aurora database is free. The cost of transfers out of the Aurora database to the internet depends on the volume of the transfer, while for transfers out of Aurora to other regions or to Amazon CloudFront it depends on which regions you are transferring from and to.
Aurora pricing vs. RDS pricing will also depend on which engine you use for RDS, which region you’re in, which features you choose to pay for, and how you transfer data while using your databases. Generally, Aurora is a bit more expensive than the other RDS database engines.
The open-source version of MySQL is completely free. You can pay for the Enterprise version for additional support and features on a subscription basis: $60,000 for a three-year subscription and support, or $5,000 per server per year.
SQL Server comes in a range of editions. Among these, the Enterprise edition provides mission-critical performance for especially demanding database requirements as well as business intelligence and analysis. It’s licensed on a per-core basis, and costs $14,256 for the open, no-level price. The standard edition is much cheaper, at $3,717, and is more suited to non-critical workloads when it comes to data management and business intelligence. The Developer version of SQL Server is free.
What Is the Best Relational Database?
All the above databases have their pros and cons. Whichever database you choose, performance will depend on which platform you run it on and which engine you use with it. Looking at the InnoDB engine for MySQL (designed for availability) alongside Aurora for RDS (designed for speed), for example, is not a fair comparison.
In all cases, however, you’ll want to monitor performance in terms of both speed and availability, so I recommend a tool like Database Performance Analyzer to monitor any or all the relational databases covered here, as I found it helps facilitate easy troubleshooting and seamless management across a database environment.