AWS Architecture Blog
Optimizing your AWS Infrastructure for Sustainability, Part IV: Databases
In Part I: Compute, Part II: Storage, and Part III: Networking of this series, we introduced strategies to optimize the compute, storage, and networking layers of your AWS architecture for sustainability.
This post, Part IV, focuses on the database layer and proposes recommendations to optimize your databases’ utilization, performance, and queries. These recommendations are based on design principles of AWS Well-Architected Sustainability Pillar.
Optimizing the database layer of your AWS infrastructure
As your application serves more customers, the volume of data stored within your databases will increase. Implementing the recommendations in the following sections will help you use databases resources more efficiently and save costs.
Use managed databases
Usually, customers overestimate the capacity they need to absorb peak traffic, wasting resources and money on unused infrastructure. AWS fully managed database services provide continuous monitoring, which allows you to increase and decrease your database capacity as needed. Additionally, most AWS managed databases use a pay-as-you-go model based on the instance size and storage used.
Managed services shift responsibility to AWS for maintaining high average utilization and sustainability optimization of the deployed hardware. HAQM Relational Database Service (HAQM RDS) reduces your individual contribution compared to maintaining your own databases on HAQM Elastic Compute Cloud (HAQM EC2). In a managed database, AWS continuously monitors your clusters to keep your workloads running with self-healing storage and automated scaling.
AWS offers 15+ purpose-built engines to support diverse data models. For example, if an Internet of Things (IoT) application needs to process large amounts of time series data, HAQM Timestream is designed and optimized for this exact use case.
Rightsize, reduce waste, and choose the right hardware
To see metrics, thresholds, and actions you can take to identify underutilized instances and rightsizing opportunities, Optimizing costs in HAQM RDS provides great guidance. The following table provides additional tools and metrics for you to find unused resources:
Service | Metric | Source |
---|---|---|
HAQM RDS | DatabaseConnections | HAQM CloudWatch |
HAQM RDS | Idle DB Instances | AWS Trusted Advisor |
HAQM DynamoDB | AccountProvisionedReadCapacityUtilization, AccountProvisionedWriteCapacityUtilization, ConsumedReadCapacityUnits, ConsumedWriteCapacityUnits | CloudWatch |
HAQM Redshift | Underutilized HAQM Redshift Clusters | AWS Trusted Advisor |
HAQM DocumentDB | DatabaseConnections, CPUUtilization, FreeableMemory | CloudWatch |
HAQM Neptune | CPUUtilization, VolumeWriteIOPs, MainRequestQueuePendingRequests | CloudWatch |
HAQM Keyspaces | ProvisionedReadCapacityUnits, ProvisionedWriteCapacityUnits, ConsumedReadCapacityUnits, ConsumedWriteCapacityUnits | CloudWatch |
These tools will help you identify rightsizing opportunities. However, rightsizing databases can affect your SLAs for query times, so consider this before making changes.
We also suggest:
- Evaluating if your existing SLAs meet your business needs or if they could be relaxed as an acceptable trade-off to optimize your environment for sustainability.
- If any of your RDS instances only need to run during business hours, consider shutting them down outside business hours either manually or with Instance Scheduler.
- Consider using a more power-efficient processor like AWS Graviton-based instances for your databases. Graviton2 delivers 2-3.5 times better CPU performance per watt than any other processor in AWS.
Make sure to choose the right RDS instance type for the type of workload you have. For example, burstable performance instances can deal with spikes that exceed the baseline without the need to overprovision capacity. In terms of storage, HAQM RDS provides three storage types that differ in performance characteristics and price, so you can tailor the storage layer of your database according to your needs.
Use serverless databases
Production databases that experience intermittent, unpredictable, or spiky traffic may be underutilized. To improve efficiency and eliminate excess capacity, scale your infrastructure according to its load.
AWS offers relational and non-relational serverless databases that shut off when not in use, quickly restart, and automatically scale database capacity based on your application’s needs. This reduces your environmental impact because capacity management is automatically optimized. By selecting the best purpose-built database for your workload, you’ll benefit from the scalability and fully-managed experience of serverless database services, as shown in the following table.
Serverless Relational Databases | Serverless Non-relational Databases |
---|---|
HAQM Aurora Serverless for an on-demand, autoscaling configuration | HAQM DynamoDB (in On-Demand mode) for a fully managed, serverless, key-value NoSQL database |
HAQM Redshift Serverless runs and scales data warehouse capacity; you don’t need to set up and manage data warehouse infrastructure | HAQM Timestream for a time series database service for IoT and operational applications |
HAQM Keyspaces for a scalable, highly available, and managed Apache Cassandra–compatible database service | |
HAQM Quantum Ledger Database for a fully managed ledger database that provides a transparent, immutable, and cryptographically verifiable transaction log owned by a central trusted authority |
Use automated database backups and remove redundant data
Manual HAQM RDS backups, unlike automated backups, take a manual snapshot of your database and do not have a retention period set by default. This means that unless you delete a manual snapshot, it will not be removed automatically. Removing manual snapshots you don’t need will use fewer resources, which will reduce your costs. If you want manual snapshots of RDS, you can set an “expiration” with AWS Backup. To keep long-term snapshots of MariaDB, MySQL, and PostgreSQL data, we recommend exporting snapshot data to HAQM Simple Storage Service (HAQM S3). You can also export specific tables or databases. This way, you can move data to “colder” longer-term archival storage instead of keeping it within your database.
Optimize long running queries
Identify and optimize queries that are resource intensive because they can affect the overall performance of your application. By using the Performance Insights dashboard, specifically the Top Dimensions table, which displays the Top SQL, waits, and hosts, you’ll be able to view and download SQL queries to diagnose and investigate further.
Tuning HAQM RDS for MySQL with Performance Insights and this knowledge center article will help you optimize and tune queries in HAQM RDS for MySQL. The Optimizing and tuning queries in HAQM RDS PostgreSQL based on native and external tools and Improve query performance with parallel queries in HAQM RDS for PostgreSQL and HAQM Aurora PostgreSQL-Compatible Edition blog posts outline how to use native and external tools to optimize and tune HAQM RDS PostgreSQL queries, as well as improve query performance using the parallel query feature.
Improve database performance
You can improve your database performance by monitoring, identifying, and remediating anomalous performance issues. Instead of relying on a database administrator (DBA), AWS offers native tools to continuously monitor and analyze database telemetry, as shown in the following table.
Service | CloudWatch Metric | Source |
---|---|---|
HAQM DynamoDB | CPUUtilization, FreeStorageSpace | CloudWatch |
HAQM Redshift | CPUUtilization, PercentageDiskSpaceUsed | CloudWatch |
HAQM Aurora | CPUUtilization, FreeLocalStorage | HAQM RDS |
DynamoDB | AccountProvisionedReadCapacityUtilization, AccountProvisionedWriteCapacityUtilization | CloudWatch |
HAQM ElastiCache | CPUUtilization | CloudWatch |
CloudWatch displays instance-level and account-level usage metrics for HAQM RDS. Create CloudWatch alarms to activate and notify you based on metric value thresholds you specify or when anomalous metric behavior is detected. Enable Enhanced Monitoring real-time metrics for the operating system the DB instance runs on.
HAQM RDS Performance Insights collects performance metrics, such as database load, from each RDS DB instance. This data gives you a granular view of the databases’ activity every second. You can enable Performance Insights without causing downtime, reboot, or failover.
HAQM DevOps Guru for RDS uses the data from Performance Insights, Enhanced Monitoring, and CloudWatch to identify operational issues. It uses machine learning to detect and notify of database-related issues, including resource overutilization or misbehavior of certain SQL queries.
Conclusion
In this blog post, we discussed technology choices, design principles, and recommended actions to optimize and increase efficiency of your databases. As your data grows, it is important to scale your database capacity in line with your user load, remove redundant data, optimize database queries, and optimize database performance. Figure 2 shows an overview of the tools you can use to optimize your databases.