Database read scaling: SAA-C03 study notes and practice questions
What to know about Database read scaling for the SAA-C03 exam, from the Design High-Performing Architectures domain (24% of the exam guide), then 2 free questions to test it. Part of the SAA-C03 study guide.
When a relational database is slowed down by reads, the exam expects you to add read capacity rather than a bigger primary. The scenario’s tolerance for stale data and its connection pattern decide the details.
Key facts
RDS read replicas (MySQL, MariaDB, PostgreSQL, Oracle, SQL Server) use asynchronous replication. You can have up to 15 for MySQL, MariaDB and PostgreSQL, in the same or another Region. Each has its own endpoint, so the application must send reads there.
Aurora Replicas share the cluster’s storage volume, so lag is usually well under 100 milliseconds. Up to 15 per cluster, and the reader endpoint load-balances connections across them. Aurora Auto Scaling adds and removes replicas with load.
Custom endpoints in Aurora point to a chosen group of instances, for example larger replicas for analytics.
Replicas can be promoted to standalone databases (for RDS) or become the new writer on failover (for Aurora).
RDS Proxy pools and shares database connections. It helps when many short-lived clients (especially Lambda functions) open too many connections, and it shortens failover times.
Read replicas are not backups and, for standard RDS, not automatic failover targets.
How to choose
The scenario says
Look for
Reporting queries slow down transactions; data up to minutes old is fine
A read replica for the reporting workload
Aurora writer overloaded with reads; minimal application change
Aurora Replicas with the reader endpoint
Read load swings during the day
Aurora Auto Scaling for replicas
The same queries over and over
ElastiCache in front of the database
“Too many connections” errors from Lambda
RDS Proxy
Reads in another Region with low latency
Cross-Region read replica or Aurora Global Database
Common traps
Scaling the primary vertically when the problem is read volume. It costs more and has a ceiling.
Sending reads that need the latest data to a replica. Asynchronous lag means they might not see recent writes.
Using Multi-AZ to “add read capacity” on a Multi-AZ DB instance deployment. The standby doesn’t serve reads.
A subscription business runs its customer portal on an Amazon RDS for MySQL DB instance.
The finance team has started running large read-only reports during the working day, and database CPU reaches 95%, which slows portal transactions. Storage metrics show IOPS well below the provisioned limit.
The reports can use data that is up to 15 minutes old. The company wants the fix that needs the LEAST change to the portal and the reporting tool.
Which solution should a solutions architect recommend?
Choose one answer.
AA. Create a read replica of the DB instance, and change the reporting tool's connection to use the read replica's endpoint.
BB. Convert the DB instance to a Multi-AZ DB instance deployment, and point the reporting tool at the standby DB instance.
CC. Add an Amazon ElastiCache cluster, and change the reporting tool to cache each report's query results with a 15-minute TTL.
DD. Change the storage to Provisioned IOPS SSD (io2) with double the current IOPS, so that reports and transactions stop competing.
Show the answer and explanation
Answer: A
A. Right: Correct. The replica is kept up to date asynchronously, which suits reports that accept slightly old data, and the report queries then use the replica's CPU instead of the primary's. The only change is one connection string in the reporting tool. Learn more: Working with DB instance read replicas (opens in a new tab)
B. Wrong: In a Multi-AZ DB instance deployment, the standby exists for failover and cannot serve read traffic. The reports would have nowhere to run except the primary. A read replica, or a Multi-AZ DB cluster with readable standbys, is needed for reads. Learn more: Multi-AZ DB instance deployments (opens in a new tab)
C. Wrong: Caching helps when the same query runs again and again. Large finance reports are mostly different queries, so few would hit the cache, and the reporting tool would need code changes. A read replica moves all the report load with no code change. Learn more: Caching database query results (opens in a new tab)
D. Wrong: The metrics show the database is short of CPU, not IOPS, so faster storage would not remove the bottleneck. Reports and transactions would still share one instance's CPU. Moving the reports to a replica separates the workloads. Learn more: Amazon RDS DB instance storage (opens in a new tab)
Explanation
When read-only work competes with transactions for the same instance's CPU, a read replica gives that work its own copy of the data. Asynchronous replication is fine because the reports accept data up to 15 minutes old, and only the reporting tool's connection changes. The Multi-AZ standby cannot serve reads, and extra IOPS does not fix a CPU bottleneck.
An online retailer runs its product catalog on an Amazon Aurora MySQL cluster that has a single writer instance and no other instances.
At peak, the writer's CPU reaches 90%, and about 85% of the queries are read-only catalog lookups. Catalog pages can show data that is up to 1 second old. Read traffic is expected to double before the holiday season.
The developers can change connection settings, but they do not have time to rewrite the data-access code.
Which solution meets these requirements with the LEAST application change?
Choose one answer.
AA. Add two Aurora Replicas in different Availability Zones, and point the application's read-only connections at the cluster's reader endpoint.
BB. Create an Amazon RDS Proxy for the cluster, and point all of the application's database connections at the proxy's default endpoint so they are pooled.
CC. Create an Amazon ElastiCache cluster, and cache the results of the catalog queries in it using a lazy-loading pattern in the application.
DD. Add an Aurora Global Database secondary cluster in another AWS Region, and send the application's catalog read queries to that cluster.
Show the answer and explanation
Answer: A
A. Right: Correct. Aurora Replicas share the cluster volume, so they are quick to add and usually lag the writer by much less than 100 milliseconds, well inside the 1-second tolerance. The reader endpoint balances connections across the replicas, so the only change is a connection string for read-only work. Learn more: Replication with Amazon Aurora (opens in a new tab)
B. Wrong: RDS Proxy pools and reuses connections, which helps when opening connections is the problem. It does not add query capacity, and connections to the proxy's default endpoint are all handled by the Aurora writer, so the CPU load stays on the same instance. Read capacity has to come from adding Aurora Replicas. Learn more: Amazon RDS Proxy for Aurora (opens in a new tab)
C. Wrong: A cache in front of the database can take a large share of repeated reads off the writer. However, lazy loading is implemented in the application's data-access code (check the cache, query on a miss, then populate the cache), which the developers do not have time to rewrite. Learn more: Caching patterns (opens in a new tab)
D. Wrong: A Global Database secondary cluster can serve reads, but it is designed for disaster recovery and for readers located in another Region. Sending this application's reads across Regions adds network latency and pays for a second cluster, when Aurora Replicas in the same Region give the read capacity more simply. Learn more: Using Amazon Aurora Global Database (opens in a new tab)
Explanation
The writer is overloaded by reads, and the data can be slightly stale, so the fix is to add read capacity within the same cluster. Aurora Replicas share the cluster's storage, typically lag by well under 100 ms, and the reader endpoint spreads connections across them, so the application only needs a different connection string for its read-only work. RDS Proxy pools connections but adds no capacity, a cache needs code changes, and a cross-Region secondary adds latency and cost.
Want more on Database read scaling? The 5 full-length practice sets have 10 more Database read scaling questions, 325 in all, none of them in the free exam. One payment of $14.99, no subscription. See the practice sets →