Understanding RDS Pricing
Amazon Web Services (AWS) offers a vast range of services, including the Relational Database Service (RDS), a fully managed database service for more straightforward setup and operation of relational databases in the cloud. However, navigating AWS pricing can be challenging; and especially complex and misunderstood for RDS.
Fully understanding RDS pricing (which can come with quite a few pricing “gotchas”) has been a challenge for us too, here at Timescale. We are building Timescale in AWS and can relate to the issue of unpredictable billing. More importantly, many of our potential customers come from Amazon RDS for PostgreSQL, so we hear countless stories about RDS costs getting mysteriously too high. So, we’ve become quite the experts in RDS pricing.
If you’re considering using RDS, grasping RDS pricing will be crucial to control your cloud costs and maximizing your investment. Understanding the numerous variables affecting the final price will allow you to make informed decisions about your database infrastructure.
Drawing from our experience, we will break down RDS pricing in this blog post so you can start understanding and slashing your bills. Our area of expertise is RDS PostgreSQL, so we’ll center this article around it—but you could apply a similar framework to other RDS relational databases.
The Challenges in Understanding RDS Pricing
The RDS PostgreSQL pricing formula builds upon two essential components:
- Database instances
- Database storage
Additionally, your bill will include extra charges for the following:
- Backup storage
- Snapshot export
- Data transfer
- Technical support
- Multi-Availability Zone (AZ) deployments
- And other extra features (like Amazon RDS Proxy for connection pooling, and Amazon RDS Performance Insights for performance diagnostics)
Lastly, RDS offers two billing options: on-demand and reserved instances. On-demand instances are billed per hour with no long-term commitments. Reserved instances require a one- or three-year commitment but offer significant discounts compared to on-demand pricing. We’ll focus on on-demand instances for simplicity, but a similar pricing model would apply to your reserved instances.
Now, let’s break down each one of these elements.
Estimating Your RDS Pricing
RDS instance types
Let’s start with RDS database instances. This bill element defines the resources allocated to your database, including CPU and memory. The more resources you provision, the higher the cost. To estimate RDS pricing accurately, you’ll have to consider the resources your workload requires while selecting the instance size that works best for you.
RDS PostgreSQL offers a vast catalog of instances. Depending on your workload's needs, you can pick:
- Newer generation RDS instance types, like the AWS Graviton-based instances. These offer better performance at lower costs than previous generations.
- T-family instances. They are most suitable for fluctuating workloads with periods of low activity followed by sudden spikes. These instances accumulate burst credits during low utilization, which can be used during high-demand periods, allowing cost savings while maintaining performance during traffic spikes.
- Memory-optimized instances. You should consider them for applications requiring loading large numbers of rows into memory. These often provide better performance for data-intensive applications.
- Typically, if you don’t have special instance needs, general-purpose (M-family) instances are sufficient; they offer a balanced mix of compute, memory, and storage resources for various workloads.
RDS instances are billed per hour, and the price varies per region, so select your region appropriately when evaluating this cost.
Also, as mentioned earlier, instances in RDS are single-AZ per default. You'll be charged extra if you prefer a multi-AZ deployment with one or two standbys for increased availability.
Our tip: Managed databases make it easy to scale up resources as you grow. If you’re unsure how much CPU or memory you’ll require, it’s better to start small, run some tests, and scale up if necessary. It could save you some money!
RDS database storage is charged per GB provisioned. The price per GB varies per region and increases for multi-AZ deployments.
RDS also allows you to pick between different storage types, each with its own price:
- General Purpose (SSD) Storage: this option suits most workloads and offers a cost-effective solution with a solid performance baseline. You can choose between two SSD storage types, gp2 and gp3, with gp3 being the latest generation in this family. It provides a baseline performance of 3,000 IOPS and 125 MiBps up to 64,000 IOPS and 4,000 MiBps, depending on the storage provisioned. It delivers 99 % storage consistency and is ideal for small to medium-sized databases, development environments, and test instances.
- Provisioned IOPS (SSD) Storage: this storage type is designed for I/O-intensive applications that require consistent, high-performance storage. This storage type is ideal for large-scale, mission-critical applications with demanding workloads, such as high-transaction-rate OLTP systems or analytics applications. It enables you to provide a specific number of IOPS, providing more predictable performance and improved storage consistency of 99.9 %.
Lastly, Amazon RDS allows you to select from 20 GiB to 3 TiB of associated magnetic storage capacity for your primary data set for backward compatibility.
Our tip: In our experience, most applications do very well with General Purpose gp3 Storage (we certainly recommend it over gp2). If you want to get specific, you can also evaluate your application's performance requirements and consider factors like read/write patterns, IOPS, and storage consistency. If your workload demands consistent high performance and requires greater storage consistency, Provisioned IOPS may be worth the additional cost. But make sure to test the performance of gp3 volumes first—don’t underestimate them.
In RDS, there is no additional charge for backup storage up to 100 % of your total database storage for a region, but if you need additional storage for your backups, it will be billed at $0.095 per GiB-month.
By default, AWS retains seven-day backups, but you can modify the retention period up to 35 days if required.
Manual snapshots allow you to create point-in-time copies of your database instances into your own Amazon S3 bucket. These snapshots can be retained indefinitely and are billed separately from the automated backups. Exporting snapshots to S3 is a potential long-term storage strategy since it is less expensive, and snapshots also require less space due to the conversion to the Parquet format.
However, you will pay for data transfer costs from RDS to S3. These will be charged per GB of snapshot size, and the price per GB varies per region.
Data transfer costs are another factor to consider. Understanding the various data transfer scenarios and associated costs will help optimize your expenses.
AWS provides 100 GB of free data transfer out to the internet per month, aggregated across all regions. Data transfer within the same AWS region and AZ, such as between RDS and EC2 instances, is generally free. However, transferring data between different AWS regions incurs costs. This cost varies depending on the destination region.
Data transfer costs are not limited to the running instance either. If you have any process that moves snapshots between regions, these transfers are also subject to data transfer costs.
For a production database, you’ll most likely want to account for one of AWS’s Support Plans to get technical help when something goes wrong.
You can pick between different Support tiers, offering various levels of support:
- Developer Support: only recommended for testing or early development.
- Business Support: lower-grade possible recommended for production workloads.
- Enterprise On-Ramp: recommended if those production workloads are mission-critical.
- Enterprise Support: delivers quicker response times in case of a major failure.
Our tip: If your database is user-facing or mission-critical, don’t save up on database support! Hopefully, your production database won’t fail often, but in our experience, database issues are inevitable. When your entire platform is down due to a database failure, you’ll be thankful for being able to issue a ticket or getting on the phone with somebody that can help you.
Beware of Potential Pricing "Gotchas"
Calculating pricing explicitly
We recommend using the AWS Pricing Calculator to estimate all these costs as accurately as possible. Still, beware of potential pricing “gotchas” that can impact your overall costs—this is vital when estimating RDS pricing. These factors may take time to become apparent but can significantly impact your expenses as your traffic and data storage requirements grow.
Remember that your initial cost estimations are based on traffic and data storage assumptions. As these increase, your costs will rise. It's essential to monitor storage and traffic and set up billing alarms to alert you when you're in danger of exceeding your monthly budget.
Similarly, as your data volume grows, you may find yourself in need of more CPU/memory to avoid performance degradation: make sure you have a sustainable path for scalability, especially if you’re dealing with mission-critical, data-intensive applications.
Your CPU, memory, and storage will be the main contributors to your RDS bill—but keep an eye on the “small things.” For example, your backups, snapshots, and data transfer fees can add up. Don’t forget you’ll also need to pay extra for RDS Proxy (if you need connection pooling) or to retain performance insights for long-term observability.
Similarly, another factor to consider is support costs. AWS support is priced separately and not included in your RDS pricing calculations. Support plans can range from $100 to $15,000 per month, depending on your needs, and with Enterprise Support starting at $5,500 per month, it can become a high cost. Evaluate your requirements and choose a support plan that fits your needs and budget.
Simplified Pricing for Time-Series Data
If you prefer a high-performance PostgreSQL solution in AWS with a pricing model that you can actually understand, Timescale can help. As a company trying to serve customers who have migrated successfully from RDS to Timescale (or looking into it), we fully recognize the challenges they face when navigating complex RDS costs.
This is why we choose to provide a simplified pricing model: our bill only has only two elements, compute and storage, making your Timescale bill transparent and predictable.
You can host all types of PostgreSQL workloads in Timescale. But especially if you have time-series data, Timescale will suit you better than RDS. By choosing Timescale, you’ll enjoy the following benefits:
- Enhanced performance with less compute and storage resources, thanks to specialized optimizations tailored for time series and analytics workloads. For a 1 TB dataset with almost one billion rows, Timescale outperforms Amazon RDS for PostgreSQL with up to 44 % higher ingest rates and queries running up to 350x faster. In practice, you’ll need less compute power in Timescale than in RDS and can scale sustainably without hindering performance.
- Substantial storage cost savings vs. RDS: our advanced compression algorithms enable a remarkable 90 % reduction in disk storage. For an extra savings boost, you can tier your older data to object storage built on S3 while remaining fully queryable.
- Expert technical support is included in our pricing, ensuring you receive the assistance you need whenever you need it. Learn how we're revolutionizing hosted database support at no extra cost.
Don't let complicated RDS costs hinder your success. Sign up for a free Timescale trial today and experience our PostgreSQL platform's simplicity, efficiency, and unparalleled benefits.