Recommendations For AWS RDS Cost Reduction

Nov 20th, 2022
Recommendations For AWS RDS Cost Reduction
URL Copied

Table of Contents

  1. Introduction
  2. Choose the Right Database Engine
  3. Rightsize Your Instances
  4. Use Reserved Instances
  5. Rightsize Database Storage
  6. Clean Your Database
  7. Remove Manual Snapshots
  8. Disable Multi-AZ in Development Environments
  9. Leverage Read Replicas and Optimize Queries
  10. Choose the Right AWS Region 
  11. Final Thoughts

Introduction

AWS can be a significant investment, and tools like Finout are instrumental in tracking cloud spending. A common discovery for many users is that Amazon RDS often constitutes a substantial portion of their monthly AWS bill.

Amazon's Relational Database Service (RDS) simplifies database management, but as your database grows, so does the associated cost. In this article, we'll look at some strategies to help you reduce your Amazon RDS costs.

Choose the Right Database Engine

The choice of database technology on Amazon RDS directly impacts your monthly costs. Amazon offers six database engines: PostgreSQL, MySQL, MariaDB, MSSQL, Oracle, and Aurora. The open-source options – PostgreSQL, MySQL, and MariaDB – are generally more cost-effective compared to the proprietary services. A cost comparison table below illustrates this difference for the same instance types.

aws-rds-cost-reduction-1

A comparison of cost for different RDS database engines (source)

Note that changing a database engine is a significant undertaking. Your engineering team must adapt the code and become proficient with the new database. However, if your use case permits a switch, the long-term savings, especially in licensing fees, can be substantial.

Rightsize Your Instances

Choosing the right instance size for your workload is key to reducing Amazon RDS costs. 

For example, Amazon RDS for PostgreSQL offers a total of 22 instances grouped into five families: “t”, “m”, “r”, “x” and “z”. 

You should evaluate your database requirements like CPU, memory, and IOPs and then figure out what the best instance type for your usage is. After you choose your instance type, monitor the database via Cloudwatch. You can also enable Enhanced Monitoring (for a small fee). This will show how each process in the database is using memory and CPU.

For example, if you have high memory with a chosen instance type, you can select a larger one or you can change the instance type after your monitoring process.

Note: Each time you switch to a smaller instance, the database halves in size (except in some specific cases). This means a 50% savings on your monthly bill.

Use Reserved Instances

Reserved Instances allow you to reserve a database instance for up to three years, offering substantial savings.

When you opt for a Reserved Instance plan, you can save a considerable amount on your overall spend. For example, reserving an instance for one year can save you up to 45% of your total cost. 

When purchasing a Reserved Instance, you can choose between three payment options: All Upfront, Partial Upfront, and No Upfront. The more you pay upfront, the greater the savings.  

If you have a steady use case and a firm architecture for your system, using Reserved Instances is a great way to achieve substantial savings. Also, if have unused Reserved Instances, you can list them for sale on the Amazon Marketplace. 

Note: If you don't mind deploying and managing the database yourself, you can use EC2 instead of RDS and save up to 47% on your costs.

New call-to-action

Rightsize Database Storage

AWS offers three types of storage which are General Purpose (SSD) Storage, Provisioned IOPS (SSD) Storage, and Magnetic Storage. 

General Purpose SSD storage allocates a baseline IOPS performance and comes with bursting capacity. This means that the storage can throttle up IOPS, but only for short periods (in bursts). 

Your goal is to choose a storage type with an IOPS rate that fits your workload. Choose one with too low of an IOPS rate, and your database will be slow to respond. Conversely, a storage type that has a high IOPS rate will result in waste and exorbitant costs.

You can use Cloudwatch metrics to monitor your current storage usage and set alarms whenever a set threshold is met. AWS won't charge you for this so it makes sense to check things like memory, CPU, network I/O, open sessions, and other metrics.

Clean Your Database

Cleaning your database from unused schemas, tables, columns, and indexes will directly impact your RDS costs.

Caching and batching statements can improve performance and reduce RDS load and data transfer costs. You can use Enhanced Monitoring and database-specific tools like the MySQL slow query log to track and examine outliers that take up a lot of resources before optimizing them.

Remove Manual Snapshots

Manual snapshots in RDS are retained even after you delete a database instance. Amazon will charge you for these according to its Backup Storage rate, which comes to $0.010 per GB per month (for the Ohio region). This means each TB of stored snapshots will cost you $10 per month. Make sure to regularly review and remove old snapshots to avoid unnecessary charges. 

Disable Multi-AZ in Development Environments

Amazon RDS offers a type of deployment called Multi-AZ that creates a replicate of your database in a different Availability Zone in case the primary database fails. 

Keep in mind that this feature doubles the hardware needed for database instances and storage, duplicating your cost in the process It's useful in production environments but it probably makes sense for you to disable it in development environments to reduce instance cost by 50%.

Leverage Read Replicas and Optimize Queries

Using read replicas helps to get reads from your databases faster and reduces the extra load on your main database.

For example, imagine you have a large column in your schema, and you need to get all that column via select, if you do it in a production environment, it can be dangerous, and the database can get stuck in busy hours, but if you use read replicas, the select query will return result from read replicas and so your active database will not be affected from that query.

Choose the Right AWS Region 

There are many regions on AWS and it is important to select the right region for your system to avoid latency cost-effectively. 

Some regions are more expensive than others, with the US and Europe generally being the cheapest. You should probably find out if it’s worth moving your database instances to a different region, though don't expect a huge impact on your price unless you're operating in an expensive region. 

Final Thoughts

Reducing Amazon RDS costs involves a holistic approach that considers your application's usage, scalability, and performance bottlenecks. At Finout, we empower teams to understand and manage their Amazon RDS costs effectively. Our platform offers custom dashboards and clear insights, making cloud costs transparent and manageable across your organization. 

Interested in seeing how Finout can optimize your AWS RDS costs? Book a demo with one of our specialists for a comprehensive platform walkthrough.

Main topics