Reducing RDS Reads with High Availability
A company is running a batch application on Amazon EC2 instances. The application consists of a backend with multiple Amazon RDS databases. The application is causing a high number of reads on the databases. A solutions architect must reduce the number of database reads while ensuring high availability. What should the solutions architect do to meet this requirement?
Community Insight
The question tests whether you distinguish offloading reads versus eliminating them, with the trap being that RDS read replicas merely move reads to other database instances while still performing database reads.
This SAA-C03 scenario asks how to cut a heavy read load on multiple Amazon RDS databases while preserving high availability. Amazon ElastiCache for Redis is the correct choice, because it serves repeated queries from an in-memory layer (genuinely eliminating RDS read traffic) and supports replication groups for high availability.
Option A (add Amazon RDS read replicas) is the most common wrong pick: replicas distribute the load but the application still issues the same total number of database reads, they just land on replicas instead of the primary, so the stated requirement to reduce database reads is not truly met.
Community Discussion (168 comments)
- reduce the number of database reads Increasing amount of read replicas (A) won't influence the amount of database reads. They will be just distributed to more replicas. While the requirement sounds nonsense to me (who cares the amount of reads?) the only way to achieve this is to put a cache before the database. For Redis vs Memcached: "Redis lets you create multiple replicas of a Redis primary. This allows you to scale database reads and to have (!) highly available (!) clusters." https://aws.amazon.com/elasticache/redis-vs-memcached/
Comments & Corrections
No comments yet — spotted an error or have a note? Share it below.
Expert Analysis
Why the Answer Is Correct
Amazon ElastiCache for Redis sits between the EC2 batch backend and the RDS databases and answers frequently requested items from memory, so those requests never reach RDS at all — this is the only option that literally reduces the number of database reads. Redis also satisfies the high-availability clause: a replication group with at least one replica in another Availability Zone plus automatic failover gives multi-AZ cache availability, as leonnnn summarized, "Use ElastiCache to reduce reading and choose redis to ensure high availability." Because the cache is transparent to the application tier, read latency also drops sharply for the batch workload, which aligns with objective 3.3 on high-performing database design.Why the Other Options Are Wrong
Option A, RDS read replicas, offloads load from the primary instance but the application performs the identical number of database reads against the replicas, so the requirement to reduce database reads is not met; as pentium75 argued, "A would reduce the number of database reads from the primary database, but not the number of database reads in general." Option D, ElastiCache for Memcached, does reduce database reads but offers no replication or automatic failover, so it fails the high-availability requirement. Option C, Route 53 DNS caching, only caches DNS lookups and has no bearing on the volume of SQL queries issued to the RDS databases.Community Comment Notes
The comments split sharply between A and B. leonnnn (top comment) defends B on both counts, while channn counters that "A: reduce the number of database reads on main + high availability provide" and Lalo asks "Where is the high availability when the database fails and the cache time runs out?" theonlyprince and theonlyprince-style reasoning note that "Adding read replicas doesn't reduce the number of database reads," and pentium75 points out that "Elasticache for Redis can be HA (contrary to Elasticache for Memcached)." cookieMr argues read replicas both offload and improve availability, but that view still leaves total database reads unchanged; studynoplay simply calls it "another controversial question from AWS."Official Reference
Exam Strategy
Read the requirement literally: if it says reduce the number of database reads, only a caching layer removes queries entirely, whereas read replicas only relocate them. Then verify the second clause (high availability) to eliminate Memcached, which has no replication or failover.
Frequently Asked Questions
Why aren't Amazon RDS read replicas enough to reduce database reads?
Read replicas only shift queries away from the primary instance; the application still issues the same total number of database reads, so overall read volume on the database tier is unchanged.
Why is ElastiCache for Memcached rejected instead of Redis?
Memcached has no replication or automatic failover, so it cannot satisfy the high-availability requirement. Redis supports replication groups with multi-AZ replicas and failover.
Related Analysis
Practice All SAA-C03 Questions
Access 120 questions with complete answers and detailed explanations.
View Full SAA-C03 Practice Test →