On this page
AWS RDS vs Civo Postgres: Performance, Latency, and Cost Compared
A practical benchmark comparing AWS RDS and Civo Managed Postgres under OLTP workloads using sysbench, focusing on latency, throughput consistency, and overall price-performance.
After my VM benchmark showed Civo's raw compute outperforming AWS on CPU and disk I/O, the natural next question was: does that translate to actual database performance?
So I did what any reasonable person would do. I spun up a managed PostgreSQL 17 instance on both platforms, pointed sysbench at them with identical OLTP workloads, and let the numbers speak.
The short version: it depends on what you're doing with your database. And the pricing story makes it interesting.
Key findings:
- Read-only queries: Dead heat. Both deliver ~202 TPS - but Civo has 12% lower P95 latency
- Read-write mixed: AWS edges ahead by 5.7% in TPS, but Civo's tail latency is 13% better
- Write-only: AWS wins decisively at +35.6% TPS - the extra RAM pays off here
- Consistency: Civo's throughput barely wavers. AWS fluctuates by up to 50% between intervals
- Price: Civo costs $87/mo vs AWS's ~$140/mo - 38% less for equivalent read performance
The Test Setup
| AWS RDS | Civo Managed Postgres | |
|---|---|---|
| Instance | db.t3.xlarge | g3.db.medium |
| vCPUs | 4 | 4 |
| RAM | 16 GiB | 8 GiB |
| Storage | 80 GB EBS gp3 | 80 GB NVMe |
| Postgres | 17 | 17 |
| Region | us-east-1 | Mumbai (MUM1) |
| Monthly cost | ~$140 | ~$87 |
A note on fairness: AWS doesn't offer a clean 4 vCPU / 8 GB combo in RDS. The db.t3.xlarge is the closest match at 4 vCPU but comes with 16 GB RAM - double what Civo provides. So AWS actually has a hardware advantage here, particularly for write-heavy workloads where more RAM means more PostgreSQL can cache in shared_buffers.
Each database was benchmarked from a client VM in the same network - a t3.medium EC2 instance in the same VPC for AWS, and a g4s.medium VM on the same default network for Civo. Same sysbench version, same parameters, same workloads.
Benchmark configuration:
- Tool: sysbench 1.0.20,
--db-driver=pgsql - Dataset: 10 tables x 100,000 rows (~1.5 GB)
- Threads: 4
- Duration: 60 seconds per test
- Workloads: OLTP read-write, read-only, write-only
Read-Only Performance: A Dead Heat
| Metric | AWS RDS | Civo | Difference |
|---|---|---|---|
| TPS | 201.91 | 202.53 | Tie |
| QPS | 3,230 | 3,240 | Tie |
| Avg latency | 19.80 ms | 19.74 ms | Tie |
| P95 latency | 29.19 ms | 25.74 ms | Civo -12% |
| Max latency | 67.99 ms | 47.19 ms | Civo -31% |
For pure reads, both databases perform identically in throughput. The interesting part is the tail latency - Civo's P95 is 25.74 ms compared to AWS's 29.19 ms. That's 12% lower, and it adds up when you're serving thousands of read-heavy API requests.
The likely explanation: Civo's NVMe storage means database page reads that miss the buffer cache hit local disk instead of network-attached EBS. Even though PostgreSQL caches aggressively, not every read is a cache hit, and when it isn't, local storage responds faster.
For most web applications - where reads outnumber writes 10:1 or more - this is the benchmark that matters. And Civo matches AWS at 38% lower cost.
AWS RDS vs Civo Managed Postgres Benchmark Architecture
A high-level overview of the benchmark architecture used to compare AWS RDS and Civo Managed Postgres under real OLTP workloads using sysbench.
Read-Write Performance: AWS Edges Ahead, Civo Stays Steady
| Metric | AWS RDS | Civo | Difference |
|---|---|---|---|
| TPS | 152.73 | 144.52 | AWS +5.7% |
| QPS | 3,054 | 2,890 | AWS +5.7% |
| P95 latency | 39.65 ms | 34.33 ms | Civo -13% |
| Max latency | 207.67 ms | 68.30 ms | Civo -67% |
AWS delivers about 6% more transactions per second on mixed read-write. But look at the latency story. Civo's P95 is 34.33 ms vs AWS's 39.65 ms. And the max latency gap is dramatic: AWS spiked to 207 ms at one point while Civo never exceeded 68 ms.
Here's what the 10-second interval data tells us:
AWS RDS throughput over time:
10s: 173 TPS → 20s: 172 → 30s: 164 → 40s: 147 → 50s: 115 → 60s: 146
Civo throughput over time:
10s: 142 TPS → 20s: 143 → 30s: 144 → 40s: 146 → 50s: 145 → 60s: 147
AWS's TPS dropped to 115 at the 50-second mark - a 33% dip from its peak - before recovering. Civo held steady within a 5 TPS range the entire run.
If you're building an application where consistent response times matter more than peak throughput - payment processing, real-time dashboards, user-facing APIs - Civo's predictability is worth paying attention to. A database that's fast but occasionally stutters can be harder to work with than one that's slightly slower but never surprises you.
Write-Only Performance: AWS Pulls Away
| Metric | AWS RDS | Civo | Difference |
|---|---|---|---|
| TPS | 528.19 | 389.43 | AWS +35.6% |
| QPS | 3,169 | 2,336 | AWS +35.6% |
| Avg latency | 7.57 ms | 10.27 ms | AWS -26% |
| P95 latency | 10.27 ms | 12.98 ms | AWS -21% |
This is where AWS's extra RAM makes a clear difference. With 16 GB vs 8 GB, PostgreSQL on RDS can keep more dirty pages in memory before flushing to disk. WAL writes batch more efficiently. The buffer cache absorbs more write pressure before I/O becomes the bottleneck.
35.6% is a meaningful gap. If your workload is write-heavy - bulk data ingestion, heavy OLTP with lots of INSERT/UPDATE, event logging at scale - the db.t3.xlarge earns its premium here.
But here's the thing: most database workloads aren't write-heavy. The standard rule of thumb is 80-90% reads, 10-20% writes. For those workloads, the read and read-write benchmarks are far more relevant.
The Pricing Story
Let's put these numbers side by side with costs.
| AWS RDS (db.t3.xlarge) | Civo (g3.db.medium) | |
|---|---|---|
| Instance cost | ~$140/mo | ~$87/mo |
| vCPUs | 4 | 4 |
| RAM | 16 GiB | 8 GiB |
| Storage | 80 GB EBS gp3 | 80 GB NVMe |
| Read TPS | 202 | 203 |
| R/W TPS | 153 | 145 |
| Write TPS | 528 | 389 |
For read-only workloads - where both perform identically - Civo costs 38% less. That's paying $87 for the same throughput that costs $140 on AWS.
For read-write workloads, AWS delivers 6% more TPS for 61% more money. The cost-per-transaction math doesn't favor AWS here either.
Even for write-only, where AWS clearly wins on raw performance: AWS gives you 35.6% more TPS for 61% more money. You're paying disproportionately more for that write performance.
Cost Per 1,000 Transactions
| Workload | AWS ($/1K TPS/mo) | Civo ($/1K TPS/mo) | Better Value |
|---|---|---|---|
| Read-Only | $0.69 | $0.43 | Civo (38% cheaper) |
| Read-Write | $0.92 | $0.60 | Civo (35% cheaper) |
| Write-Only | $0.27 | $0.22 | Civo (17% cheaper) |
Civo wins on price-performance across every workload type. Even on writes where AWS has a 35.6% TPS advantage, Civo still delivers more transactions per dollar.
What About T3 Burst Credits?
One thing worth noting: the db.t3.xlarge is a burstable instance class. It has a CPU baseline and earns burst credits when idle. During my 60-second test, the instance likely had accumulated credits that boosted performance.
In sustained production workloads - where the database is busy for hours, not seconds - T3 instances can exhaust their burst credits and get throttled to baseline CPU. The real-world gap between AWS and Civo could be smaller than what these benchmarks show, or it could flip entirely if you hit the credit ceiling during peak hours.
If burst credits concern you, AWS offers db.m5.xlarge or db.m6g.xlarge as non-burstable alternatives - but those start at $250-280/month. At that price point, the comparison with Civo's $87/month becomes even more dramatic.
When AWS RDS Is Still the Right Choice
- Write-intensive workloads at scale - if you're doing heavy ETL, bulk ingestion, or high-frequency writes, the extra RAM on RDS makes a measurable difference
- You need the AWS ecosystem - IAM integration, CloudWatch metrics, automated cross-region read replicas, RDS Proxy, AWS Backup with point-in-time recovery
- Compliance requirements - some regulations specifically require AWS infrastructure
- Multi-AZ failover - RDS Multi-AZ with synchronous replication and automatic failover is battle-tested at massive scale
When Civo Managed Postgres Makes More Sense
- Read-heavy applications - web apps, content platforms, APIs where reads dominate. Same performance, 38% lower cost
- Predictable latency matters - Civo's consistent throughput means fewer timeout surprises and more predictable user experience
- Budget-conscious teams - startups, side projects, indie SaaS. $87/mo vs $140/mo adds up, especially when you're running staging and production databases
- You don't need the AWS ecosystem - if you're not using IAM, CloudWatch, or RDS-specific features, you're paying for an ecosystem you're not using
FAQs
How was the benchmark performed?
The benchmark used sysbench OLTP workloads against PostgreSQL 17 on both AWS RDS and Civo Managed Postgres using identical thread counts, dataset sizes, and runtime duration.
Why did Civo show lower tail latency than AWS RDS?
Civo’s managed Postgres uses NVMe-backed storage, which can reduce storage latency during cache misses. In the benchmark, this resulted in lower P95 and max latency during read-heavy and mixed OLTP workloads.
Which platform offered better price-performance overall?
Civo delivered stronger price-performance across most OLTP scenarios. Read performance remained close to AWS RDS while infrastructure cost stayed significantly lower.
Can benchmark results vary in real production environments?
Yes. PostgreSQL tuning, workload patterns, regional latency, storage behavior, caching, and sustained resource usage can all affect real-world database performance.
Conclusion
The database benchmark tells a more nuanced story than the raw VM benchmark. AWS RDS with double the RAM wins on write throughput - no surprise there. But for the workloads most applications actually run (read-heavy or mixed), Civo matches AWS performance at significantly lower cost, with better tail latency and more predictable throughput.
If I'm standing up a new Postgres database for a typical web application and I don't need AWS-specific managed features, the numbers say Civo. Same read performance, lower latency, more consistent behavior, $53/month cheaper. That's $636/year per database instance - and most production setups have more than one.
The raw data and benchmarking tools are available in my vm-benchmark repo if you want to run the tests yourself. The Terraform configs and Ansible playbooks are all there.
If you're running databases on AWS and haven't benchmarked what you're actually getting for what you're paying, it might be worth an afternoon to find out.
Read More
- Learn how to configure private internal LoadBalancers in Civo Kubernetes using annotations, firewall rules, and internal networking.
How to Create an Internal Load Balancer in Civo Kubernetes - A practical guide to optimizing cloud infrastructure costs, compute sizing, and workload efficiency.
How to Best Rightsize Your Cloud Resources - Deploy and host a static website on Amazon S3 with public access configuration and website hosting enabled.
How to Host a Static Website Using Amazon S3 - Secure Kubernetes API access using Cloudflare Zero Trust, private networking, and WARP connectivity.
Your Kubernetes API Is Public — Here’s How to Make It Private - Compare K3s and Kubernetes architecture, performance characteristics, and production deployment use cases.
K3s vs Kubernetes (K8s): Performance, Architecture & Use Cases