Amazon’s Relational Database Service (Amazon RDS) offers a variety of database instances, which can be confusing at first. In this guide, we’ll clarify what each RDS instance class, family, type, and size means in under 15 minutes.
Let’s start at the beginning.
Table of Contents
What Does An Amazon RDS Instance Do?
Amazon RDS is a Database-as-a-Service (DaaS) platform. RDS instances are virtual servers that provide the computing power to set up, run, and maintain databases in the AWS public cloud.
AWS refers to the specific instances that power Amazon RDS as database instances (DB instances).
DB instances provide an isolated environment in which to create and host one or more relational databases. Yet, you can access those databases just like a regular stand-alone database.
RDS DB instances (virtual hardware) run a kind of operating system (software) known as a relational database engine (DB engine). Amazon RDS currently supports six types of DB engines:
- MariaDB
- MySQL
- Microsoft MySQL Server
- PostgreSQL
- Oracle
There are different versions of these engines, each with different features. The one thing they all have in common is that they run on RDS database instances.
How do those database instances work?
RDS Instance Classes Explained
There are three types of Amazon RDS instance classes, each optimized for a specific use case:
Amazon RDS Instance Class | Use case | No. of vCPUs supported | Amount of Memory Supported in GiB | Networking I/O |
Standard performance | Workloads with light in-memory functions | Up to 64 | 1.7 to 256 | 0.45Gbps to 10Gbps |
Burstable performance | Where you may need instances capable of handling sudden spikes in heavy load as needed (bursts). | Up to 128 | 17.1 to 3904 | 0.50Gbps to 14Gbps |
Memory optimized | Workloads with many in-memory functions, such as big data analysis | Up to 8 | 1 to 32 | Low to Moderate I/O |
Each RDS instance class includes both an instance type and size. An instance class can have several instance types. Then, each RDS instance type offers several instance sizes to choose from.
This flexibility gives you the freedom to choose the perfect database instance for your needs. It can also help achieve a healthy price-performance ratio. Yet, managing all those options often adds to the complexity of managing Amazon RDS.
What Are The Different RDS Instance Types?
There are two types of relational database instances available on Amazon RDS: General-purpose and Memory-optimized. Here’s a table detailing the connection between RDS instance classes, families, and types.
Amazon RDS Database Instance Classes | Database Instance Type | Amazon RDS instance families | Amazon RDS instance types | Use case |
Standard performance | General-purpose | T M | db.t2 db.m1, db.m2, db.m3, db.m4, db.m5, db.m5d, db.m6g | Baseline level of CPU performance Balanced CPU, memory, and networking capacity for various types of workloads, but especially suitable for CPU-intensive workloads |
Burstable performance | General purpose | T | db.t2 (Unlimited Mode) db.t3 db.t4g | Balanced CPU, memory, and networking capacity for various types of workloads, but able to scale up performance during unexpected increases in workload for as long as needed |
Memory-optimized | Memory-optimized | R X Z | db.r3, db.r4, db.r5d, db.r5b, db.r5, db.r6g db.x1, db.x1e, db.x2g db.z1d | Boost performance of processes that handle a lot of data sets in memory Designed for high performance in enterprise-grade and heavy in-memory uses Combines the highest compute and memory performance of any instance type |
What Are The Different Amazon RDS Instance Sizes?
The RDS service provides some control over the type of instances you can choose for your workload. Bear in mind that RDS is a managed service, so you may not have as much choice as you would when running MySQL with Amazon EC2 instances.
Another thing. Each database instance size supports a unique combination of CPU, memory, networking, and storage resources.
Here’s a handy overview of the types of Amazon RDS instance sizes to expect:
Database instance type | Database instance sizes | vCPU | Memory in GiB | Networking performance in Gbps |
T2 | db.t2.micro db.t2.small db.t2.medium db.t2.large db.t2.xlarge db.t2.2xlarge | 1 1 2 2 4 8 | 1 2 4 8 16 32 | Low to moderate Low to moderate Low to moderate Low to moderate Moderate Moderate |
T3 | db.t3.micro db.t3.small db.t3.medum db.t3.large db.t3.xlarge db.t3.2xlarge | 2 2 2 2 4 8 | 1 2 4 8 16 32 | Up to 5Gbps Up to 5Gbps Up to 5Gbps Up to 5Gpbs Up to 5Gbps Up to 5Gbps |
T4g | db.t4g.micro db.t4g.small db.t4g.medium db.t4g.large db.t4g.xlarge db.t4g.2xlarge | 2 2 2 2 4 8 | 1 2 4 8 16 32 | Up to 5Gbps Up to 5Gbps Up to 5Gbps Up to 5Gbps Up to 5Gbps Up to 5Gbps |
M4 | db.m4.large db.m4.xlarge db.m4.2xlarge db.m4.4xlarge db.m4.10xlarge db.m4.16xlarge | 2 4 8 16 40 64 | 8 16 32 64 160 256 | Moderate High High High 10Gbps 25Gbps |
M5d | db.m5d.large db.m5d.xlarge db.m5d.2xlarge db.m5d.4xlarge db.m5d.8x.large db.m5d.12xlarge db.m5d.16xlarge db.m5d.24xlarge | 2 4 8 16 32 48 64 96 | 8 16 32 64 128 192 256 384 | Up to 10 Gbps Up to 10Gbps Up to 10Gbps Up to 10Gbps 10Gbps 12Gbps 20Gbps 25Gbps |
M5 | db.m5.large db.m5.xlarge db.m5.2xlarge db.m5.4xlarge db.m5.8xlarge db.m5.16xlarge db.m5.12xlarge db.m5.24xlarge | 2 4 8 16 32 48 64 96 | 8 16 32 64 128 192 256 384 | Up to 10Gbps Up to 10Gbps Up to 10Gbps Up to 10Gbps 10Gbps 12Gbps 20Gbps 25Gbps |
M6g | db.m6g.large db.m6g.xlarge db.m6g.2xlarge db.m6g.4xlarge db.m6g.8xlarge db.m6g.12xlarge db.m6g.16xlarge | 2 4 8 16 32 48 64 | 8 16 32 64 128 192 265 | Up to 10Gbps Up to 10Gbps Up to 10 Gbps Up to 10Gbps 12Gbps 20Gbps 25Gbps |
R4 | db.r4.large db.r4.xlarge db.r4.2xlarge db.r4.4xlarge db.r4.8xlarge db.r4.16xlarge | 2 4 8 16 32 64 | 15.25 30.5 61 122 244 488 | Up to 10Gbps Up to 10Gbps Up to 10Gbps Up to 10Gbps 10Gbps 25Gbps |
R5d | db.r5d.large db.r5d.xlarge db.r5d.2xlarge db.r5d.4xlarge db.r5d.8xlarge db.r5d.12xlarge db.r5d.16xlarge db.r5d.24xlarge | 2 4 8 16 32 48 64 96 | 16 32 64 128 256 384 512 768 | Up to 10Gbps Up to 10Gbps Up to 10Gbps Up to 10Gbps 10Gbps 10Gbps 20Gbps 25Gbps |
R5b | db.r5b.large db.r5g.xlarge db.r5g.2xlarge db.r5g.4xlarge db.r5g.8xlarge db.r5g.12xlarge db.r5g.16xlarge db.r5g.24xlarge | 2 4 8 16 32 48 64 96 | 16 32 64 128 256 384 512 768 | Up to 10 Gbps Up to 10 Gbps Up to 10Gbps Up to 10Gbps 10Gbps 10Gbps 20Gbps 25Gbps |
R5 | * | |||
R6g | db.r6g.large db.r6g.xlarge db.r6g.2xlarge db.r6g.4xlarge db.r6g.8xlarge db.r6g.12xlarge db.r6g.16xlarge | 2 4 8 16 32 48 64 | 16 32 64 128 256 384 512 | Up to 10Gbps Up to 10Gbps Up to 10Gbps Up to 10Gbps 10Gbps 20Gbps 25Gbps |
X1 | db.x16xlarge db.x1.32xlarge | 64 (32 cores) 128 (64 cores) | 976 1952 | 10Gbps 25 Gbps |
X1e | db.x1e.xlarge db.x1e.2xlarge db.x1e.4xlarge db.x1e.8xlarge db.x1e.16xlarge db.x1e.32xlarge | 4 8 16 32 64 128 | 122 244 488 976 1952 3904 | Up to 10Gbps Up to 10Gbps Up to 10Gbps Up to 10Gbps 10Gbps 25Gbps |
X2g | db.x2g.medium db.x2g.large db.x2g.xlarge db.x2g.2xlarge db.x2g.4xlarge db.x2g.8xlarge db.x2g.12xlarge db.x2g.16xlarge | 1 2 4 8 16 32 48 64 | 16 32 64 128 256 512 768 1024 | Up to 10Gbps Up to 10Gbps Up to 10Gbps Up to 10Gbps Up to 10Gbps 12Gbps 20Gbps 25Gbps |
Z1d | db.z1d.large db.z1d.xlarge db.z1d.2xlarge db.z1d.3xlarge db.z1d.6xlarge db.z1d.12xlarge | 2 4 8 12 24 48 | 16 32 64 96 192 384 | Up to 10,000Mbps Up to 10,000Mbps Up to 10,000Mbps Up to 10,000Mbps 10,000Mbps 25,000Mbps |
Other variables to consider when configuring RDS instances include whether they support enhanced networking, if they are EBS-optimized, and which database storage option to pair with them.
Now, it’s not uncommon to feel overwhelmed by the number of RDS instance classes, families, and types available. Right-sizing database instances can be challenging for many teams. So, how do you do it?
How To Choose The Right Amazon RDS Instances For Your Workload
You can do it yourself, manually. It may require trial and error to find just the right RDS instance type for your specific workload. This process can also take a couple of weeks or months, and continuously as your workload requirements evolve. Take care not to blow a hole in your budget.
There’s a second option. Consider automating the process with a tool if you’re having trouble choosing the right RDS instance.
Using CloudZero Advisor, you can choose the most suitable Amazon RDS instances based on a combination of factors, like your DB engine, Amazon region, pricing, as well as your desired network, disk, CPU, and memory performance.
Check this out:
Moreover, CloudZero empowers you to collect, analyze, and understand your Amazon RDS costs in relation to your overall AWS spend. You can also zoom in to see your costs in a way that most cloud cost optimization tools never show you, like this:
With CloudZero, you can easily identify who, when, and where your cloud budget is going by viewing your:
- Cost per customer
- Cost per feature
- Cost per team
- Cost per project
- Cost per deployment
- Cost per environment
- Cost of goods sold (COGS), and more
Drift, for example, used CloudZero to figure out exactly where they could reduce their AWS costs and saved $2.4 million. CloudZero can also deliver for you.
Amazon RDS Instances FAQs
The following are some answers to some of the most frequently asked questions about Amazon RDS.
How much do Amazon RDS instances cost?
RDS costs depend on several factors, which we’ve detailed in our Amazon RDS pricing guide here.
What is the difference between RDS and EC2 instances?
The Amazon RDS service provides database instances, while the Amazon EC2 service provides compute instances.
How do I change my RDS instance type?
Use the AWS Command-Line Interface (AWS CLI), the AWS Management Console, or the Amazon RDS API to create or change your database instances.
Does changing my RDS instance type cause downtime?
RDS reboots your databases to apply changes, which can sometimes cause downtime. Be sure to plan your workload in advance to avoid disruptions to your service.
How long does it take to change an Amazon RDS instance?
You can either apply instance changes immediately or schedule them to apply in the next maintenance window.
Can I downgrade an RDS instance size?
You can change the size of your RDS instance depending on your workload.
Why are Amazon RDS instances more expensive than Amazon EC2 instances?
Amazon RDS is a fully managed AWS service that eliminates the need to set up, run, and maintain your own database infrastructure on AWS. This time-saving feature is reflected in RDS’ higher pricing.