RDS Engines and Instance Classes
Compare MySQL, PostgreSQL, MariaDB, Oracle, SQL Server, and Aurora, and select the right instance class for your workload.
RDS Engines and Instance Classes is a free AWS Solutions Architect lesson on CoddyKit — lesson 1 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the AWS Solutions Architect learning path, one of 4 lessons in the course, and your progress syncs across the web and the CoddyKit app.
Introduction to Amazon RDS Engines
Amazon RDS supports six database engines: MySQL, PostgreSQL, MariaDB, Oracle, Microsoft SQL Server, and Amazon Aurora. Each engine is a fully managed version of the open-source or commercial database you already know. AWS handles patching, backups, and failover so you can focus on your application logic.
Choosing the right engine depends on your existing application requirements, licensing costs, and the features each engine provides. Aurora is AWS's cloud-native option built for performance and availability.
MySQL and PostgreSQL on RDS
MySQL is the world's most popular open-source relational database and is a natural fit for web applications and CMSs. PostgreSQL offers advanced SQL compliance, strong JSONB support, and powerful extension ecosystem, making it popular for analytics and geospatial workloads.
Both engines on RDS support automated backups, Multi-AZ deployments, and Read Replicas. PostgreSQL Read Replicas can span across regions, while MySQL supports up to 15 cross-region replicas with Aurora MySQL.
# Creating an RDS MySQL instance via CLI
aws rds create-db-instance \
--db-instance-identifier mydb \
--db-instance-class db.t3.micro \
--engine mysql \
--master-username admin \
--master-user-password MyPass123! \
--allocated-storage 20MariaDB and Its Use Cases
MariaDB is a community-developed fork of MySQL, fully compatible at the wire-protocol level with MySQL clients. It offers additional storage engines, better performance in some workloads, and an open development model with no proprietary features.
On RDS, MariaDB is a drop-in replacement for MySQL if you want to avoid Oracle's MySQL licensing or prefer the community fork. It supports the same automated backup, Multi-AZ, and Read Replica features as MySQL.
Oracle and SQL Server on RDS
Oracle Database on RDS supports both License Included (LI) and Bring Your Own License (BYOL) models. LI bundles the Oracle SE2 license into the hourly rate, while BYOL lets you use your existing Enterprise Edition license for features like partitioning and Advanced Security.
Microsoft SQL Server on RDS similarly offers LI editions (Express, Web, Standard, Enterprise) and BYOL. Both engines support Multi-AZ with Synchronous Mirroring but do not support Read Replicas the same way as open-source engines.
Amazon Aurora: Cloud-Native Engine
Amazon Aurora is a cloud-native relational database compatible with both MySQL and PostgreSQL. Aurora delivers up to 5x the throughput of MySQL and 3x the throughput of PostgreSQL on the same hardware by using a distributed storage layer that automatically replicates data six ways across three Availability Zones.
Aurora's storage grows automatically in 10 GB increments up to 128 TiB, eliminating manual storage provisioning. The separation of compute and storage also allows Aurora Serverless to scale capacity up and down automatically.
RDS Instance Class Families
RDS instance classes follow the same naming convention as EC2 but are prefixed with db. instead of just the family letter. The main families are:
- db.t — Burstable performance, cost-effective for dev/test (e.g., db.t3.micro, db.t4g.small)
- db.m — General purpose, balanced CPU/memory (e.g., db.m6g.large)
- db.r — Memory-optimised for large caches and in-memory tables (e.g., db.r6g.xlarge)
- db.x — Extreme memory for Oracle and SQL Server with SAP workloads
Choose db.t for development, db.m for typical production, and db.r for databases with large working sets.
Selecting the Right Instance Class
Selecting an RDS instance class requires profiling your workload's CPU utilisation, memory consumption, IOPS needs, and network bandwidth. AWS Compute Optimizer and the RDS Performance Insights tool help identify if your current instance is over- or under-provisioned.
A common pattern is to start with a db.t3 for prototyping, move to db.m6g when the load becomes steady, and graduate to db.r6g when queries benefit from a larger buffer pool. Graviton2-based instances (db.m6g, db.r6g) typically offer up to 35% better price-performance than x86 equivalents.
# List available DB instance classes for MySQL 8.0
aws rds describe-orderable-db-instance-options \
--engine mysql \
--engine-version 8.0 \
--query 'OrderableDBInstanceOptions[].DBInstanceClass' \
--output text | tr '\t' '\n' | sort -u | head -20Storage Options for RDS
RDS offers three storage types that map to EBS volumes behind the scenes:
- gp2 / gp3 — General Purpose SSD; gp3 lets you independently provision IOPS and throughput without paying for more storage
- io1 / io2 — Provisioned IOPS SSD for latency-sensitive OLTP databases requiring consistent sub-millisecond response
- st1 — Throughput Optimised HDD, available only for specific engines and test workloads
For most production RDS deployments, gp3 is the recommended default because it offers 3,000 IOPS at no extra cost and can be scaled independently of storage size.
Scaling RDS: Vertical and Horizontal
RDS supports two scaling dimensions. Vertical scaling (instance class change) requires a brief downtime window unless Multi-AZ is enabled—with Multi-AZ the failover allows near-zero downtime during the resize. You can schedule the modification for the next maintenance window or apply it immediately.
Horizontal scaling is read-only: you add Read Replicas to distribute SELECT queries away from the primary. Read Replicas use asynchronous replication, so there is a small replication lag that your application must tolerate.
# Modify an RDS instance class (apply immediately)
aws rds modify-db-instance \
--db-instance-identifier mydb \
--db-instance-class db.m6g.large \
--apply-immediatelyAurora vs Community Engines: Key Differences
When choosing between Aurora and community MySQL/PostgreSQL, consider these trade-offs:
- Aurora: higher throughput, automatic 6-way replication, fast failover (~30 s), no manual storage management, higher per-hour cost
- MySQL/PostgreSQL: lower cost, broader community extensions, BYOL option, familiar operational tooling
For exam scenarios, Aurora is preferred when the question emphasises high availability, automatic storage growth, or performance close to commercial databases at open-source price. Community engines win when cost minimisation or feature parity with on-premises is the priority.
Engine Version Upgrades on RDS
RDS separates minor version upgrades (e.g., MySQL 8.0.32 → 8.0.36) from major version upgrades (e.g., MySQL 5.7 → 8.0). Minor upgrades can be set to auto-apply during the maintenance window by enabling --auto-minor-version-upgrade. Major upgrades are manual and may require application compatibility testing.
Always test major version upgrades in a staging environment first. You can take a DB snapshot before the upgrade to roll back if problems arise. Aurora clusters support in-place major version upgrades with minimal disruption.
# Enable auto minor version upgrade
aws rds modify-db-instance \
--db-instance-identifier mydb \
--auto-minor-version-upgrade \
--apply-immediatelyQuick Check
Test your understanding of AWS Solutions Architect (SAA-C03) concepts from this lesson.
Lesson Recap
In this lesson you learned: RDS supports six engines (MySQL, PostgreSQL, MariaDB, Oracle, SQL Server, Aurora), instance classes map to workload profiles (db.t for dev/test, db.m for general, db.r for memory-intensive), and Aurora offers superior throughput and automatic storage scaling compared to community engines. Next up we explore Multi-AZ deployments and automated backups for high availability.
Frequently asked questions
Is the “RDS Engines and Instance Classes” lesson free?
Yes — the full text of “RDS Engines and Instance Classes” is free to read here on the web, and the AWS Solutions Architect course includes 4 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the AWS Solutions Architect course, upgrade to CoddyKit PRO.
What will I learn in “RDS Engines and Instance Classes”?
Compare MySQL, PostgreSQL, MariaDB, Oracle, SQL Server, and Aurora, and select the right instance class for your workload. You practise AWS Solutions Architect with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.
Do I need any experience to start AWS Solutions Architect?
No prior experience is required. AWS Solutions Architect on CoddyKit is structured for beginners through advanced learners; this is — lesson 1 of 4, so you can start here or from the beginning and move at your own pace.
How long does the “RDS Engines and Instance Classes” lesson take?
Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.
Can I write and run code in this AWS Solutions Architect lesson?
Yes. Every AWS Solutions Architect lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.
All lessons in this course
- RDS Engines and Instance Classes
- Multi-AZ and Automated Backups
- Read Replicas for Read Scaling
- RDS Security: Encryption and Parameter Groups