Viewing RDS database recommendations - AWS Compute Optimizer

Viewing RDS database recommendations

Compute Optimizer generates Amazon Relational Database Service (Amazon RDS) DB instances and RDS DB instance storage recommendations for RDS for MySQL, RDS for PostgreSQL, Amazon Aurora databases. These recommendations are displayed on the Recommendations for RDS DB instances and RDS DB instance details pages of the Compute Optimizer console. Both of these pages are divided into two separate tabs: Instance and Storage.

  • Recommendations for RDS DB instances page

    Instance

    This tab displays each of your current RDS DB instances, finding classifications, finding reasons, current instance type, estimated savings, and saving opportunities. The top recommendation from Compute Optimizer is listed next to each of your instances. This recommendation includes the recommended instance type, On-Demand pricing, and the price difference between your current instance. Use the recommendations page to compare your current instances with the top recommendation. Doing this can help you to decide if you want to upsize or downsize your instances.

    Storage

    This tab displays each of your current volumes, finding classifications, current volume type, and current price. The top recommendation from Compute Optimizer is listed next to each of your volumes. It includes the recommended volume type, recommended IOPS, the price of the recommendation, and the price difference between your current volume and the recommendation. You can use the recommendations page to compare your current volumes with their top recommendation, which can help you to decide if you should upsize or downsize your volume.

    For more information about how to view your Amazon RDS DB recommendations, see Accessing RDS DB instance recommendations and details.

  • RDS DB instance details page

    Instance

    This tab displays optimization recommendations for a specific RDS DB instance or Aurora DB instance. It lists the specifications for each recommendation including performance risk, price difference, and On-Demand pricing.

    Storage

    This tab displays the optimization recommendation for an RDS DB instance storage. It lists the specifications for each recommendation including allocated storage, provisioned IOPS, throughput, and storage price difference.

    Both detail pages display utilization metric graphs that you can use to compare the current instance or storage with the projected utilization metrics for the recommendation options. The graphs can help you to better understand the impact of these recommendations.

    For more information about how to view your RDS DB instance and storage details, see Accessing RDS DB instance details page.

The recommendations are refreshed daily and they can take up to 12 hours to generate. Keep in mind that Compute Optimizer requires at least 30 hours of Amazon CloudWatch metrics to generate recommendations for Amazon RDS DB instances. For more information, see Resource requirements.

Finding classifications

The Finding column on the Recommendations for RDS DB instances page provides a summary of how your Amazon RDS DB and Aurora DB instances performed during the lookback period.

The following findings classifications apply to RDS DB instances.

Classification Description

Under-provisioned

When Compute Optimizer detects that there isn't enough CPU, memory, network bandwidth, EBS IOPS, or EBS throughput, an RDS DB instance is considered under-provisioned. Compute Optimizer displays finding reasons, such as CPU under-provisioned, Memory under-provisioned, EBS IOPS under-provisioned, and Network bandwidth under-provisioned. An under-provisioned RDS DB instance might result in poor application performance.

Over-provisioned

When Compute Optimizer detects that there is excessive CPU, EBS IOPS, network bandwidth, or EBS throughput, an RDS DB instance is considered over-provisioned. Compute Optimizer displays finding reasons, such as CPU over-provisioned, EBS IOPS over-provisioned, Network bandwidth over-provisioned, and EBS throughput over-provisioned. An over-provisioned RDS DB instance might result in additional infrastructure costs.

Optimized

When the specifications of your RDS DB instance meet the performance requirements of your workload, the RDS DB instance is considered optimized. For optimized instances, Compute Optimizer might recommend a new generation DB instance class or that a new engine version is available.

The following findings classifications apply to RDS storage.

Classification Description

Under-provisioned

When Compute Optimizer detects that there isn't enough allocated storage or EBS throughput, an RDS storage volume is considered under-provisioned. Compute Optimizer displays a finding reason of EBS volume allocated storage under-provisioned or EBS volume throughput under-provisioned. An under-provisioned RDS DB instance storage volume might result in poor application performance.

Over-provisioned

When Compute Optimizer detects that there is excessive IOPS or EBS throughput, an RDS DB instance storage volume is considered over-provisioned. Compute Optimizer displays a finding reason of EBS volume IOPS over-provisioned or EBS volume throughput over-provisioned. An over-provisioned DB instance storage volume might result in additional infrastructure costs.

Optimized

When the specifications of your RDS DB instance storage volume meet the performance requirements of your workload, the storage is considered optimized. For optimized DB instance storage, Compute Optimizer might recommend a new generation storage type.

For more information about under and over-provisioned RDS DB instances, see Finding reasons in the Viewing RDS database recommendations topic.

Finding reasons

The Finding reasons column on the Recommendations for RDS DB instances and RDS DB instance details pages shows which specification of an instance is under-provisioned or over-provisioned.

The following finding reasons apply to RDS DB instances:

Finding reason Description

CPU over-provisioned

The DB instance’s CPU configuration can be sized down and also meet the performance requirements of your workload. This is identified by analyzing the CPUUtilization metric of the current instance during the lookback period.

CPU under-provisioned

The DB instance’s CPU configuration doesn't meet the performance requirements of your workload and there is an alternative instance type that provides better CPU performance. This is identified by analyzing the CPUUtilization metric of the current instance during the lookback period.

Memory under-provisioned

The DB instance’s memory configuration doesn't meet the performance requirements of your workload and there isn't an alternative instance type that provides better memory performance.

For RDS MySQL and RDS PostgreSQL DB instances, this is identified by analyzing the os.swap.in and os.swap.out metrics of the current instance if Amazon RDS Performance Insights is enabled. To enable Performance Insights for Aurora, see Turning Performance Insights on and off for Aurora in the Amazon Aurora User Guide.

For Aurora DB instances, this is identified by analyzing the os.memory.outOfMemoryKillCount metric of the current instance if Amazon RDS Performance Insights is enabled. For Aurora MySQL DB instances, Compute Optimizer also analyzes Aurora memory health state metrics. To enable Performance Insights for Aurora, see Turning Performance Insights on and off for Aurora in the Amazon Aurora User Guide.

EBS throughput over-provisioned

The DB instance’s EBS throughput configuration can be sized down and also meet the performance requirements of your workload. This is identified by analyzing the VolumeReadBytes and VolumeWriteBytes metric of EBS volumes attached to the current instance during the lookback period.

EBS throughput under-provisioned

The DB instance’s EBS throughput configuration doesn't meet the performance requirements of your workload and there is an alternative instance type that provides better EBS throughput performance. This is identified by analyzing the VolumeReadBytes and VolumeWriteBytes metric of EBS volumes that are attached to the current instance during the lookback period.

EBS IOPS over-provisioned

The DB instance’s EBS IOPS configuration can be sized down and also meet the performance requirements of your workload. This is identified by analyzing the VolumeReadOps and VolumeWriteOps metrics of EBS volumes attached to the current instance during the lookback period.

EBS IOPS under-provisioned

The DB instance’s EBS IOPS configuration doesn't meet the performance requirements of your workload and there is an alternative instance type that provides better EBS throughput performance. This is identified by analyzing the VolumeReadOps and VolumeWriteOps metrics of EBS volumes attached to the current instance during the lookback period.

Network bandwidth over-provisioned

The DB instance’s network bandwidth configuration can be sized down while still meeting the performance requirements of your workload. For RDS MySQL and RDS PostgreSQL DB instances, this is identified by analyzing the NetworkIn and NetworkOut metrics of the current instance during the lookback period.

Network bandwidth under-provisioned

The DB instance’s network bandwidth configuration doesn't meet the performance requirements of your workload and there is an alternative instance type that provides better network bandwidth performance.

For RDS MySQL and RDS PostgreSQL DB instances, this is identified by analyzing the NetworkIn and NetworkOut metrics of the current instance during the lookback period.

For Aurora DB instances, this is identified by analyzing the NetworkThroughput and StorageNetworkThroughput metrics of the current instance during the lookback period.

Instance storage read IOPS under-provisioned

The DB instance's instance storage read IOPS limit doesn't meet the performance requirement of your workload and there is an alternative instance type that provides better performance. For Aurora DB instances, this is identified by analyzing the ReadIOPSEphemeralStorage metric during the lookback period.

Instance storage write IOPS under-provisioned

The DB instance's instance storage write IOPS limit doesn't meet the performance requirement of your workload and there is an alternative instance type that provides better performance. For Aurora DB instances, this is identified by analyzing the WriteIOPSEphemeralStorage metric during the lookback period.

DB cluster writer under-provisioned

This indicates that Compute Optimizer has synchornized the recommendation for this Aurora DB instance read replica with the DB cluster's writer because it has a promotion tier < or = to 1. Compute Optimizer does this to help you maintain your failover capacity.

New generation DB instance class available

If the current DB instance is a previous generation instance type, Compute Optimizer generates this finding reason to indicate that there is a new generation DB instance type available. We encourage you to use current generation instance types to get the best performance.

New engine version available

If the current engine version is deprecated, Compute Optimizer generates this finding reason to indicate that there is a new engine version available.

The following finding reasons apply to RDS DB instance storage.

Finding reason Description

EBS volume allocated storage under-provisioned

The amount EBS volume allocated storage space attached to the DB instance doesn't meet the performance requirements of your workload and there is an alternative volume type that provides better allocated storage performance. This is identified by analyzing the VolumeReadOps and VolumeWriteOps metrics of EBS volumes attached to the current instance during the lookback period.

EBS volume IOPS over-provisioned

The EBS volume IOPS configuration attached the DB instance can be sized down and also meet the performance requirements of your workload. This is identified by analyzing the VolumeReadBytes and VolumeWriteBytes metrics of EBS volumes attached to the current instance during the lookback period.

EBS volume throughput under-provisioned

The size of the EBS volume throughput attached the DB instance doesn't meet the performance requirements of your workload and there is an alternative volume type that provides better volume throughput performance.

EBS volume throughput over-provisioned

The EBS volume throughput attached the DB instance can be sized down and also meet the performance requirements of your workload.

New generation storage type available

If the current DB instance storage is a previous generation storage type, Compute Optimizer generates this finding reason to indicate that there is a new generation storage type available. We encourage you to use current generation storage types to get the best performance.

AWS Graviton-based instance recommendations

When viewing Amazon RDS DB instance recommendations, you can view the price and performance impact of running your workload on AWS Graviton-based instances. To do so, choose Graviton (aws-arm64) in the CPU architecture preference dropdown. Otherwise, choose Current to view recommendations that are based on the same CPU vendor and architecture as the current RDS DB instance.

The Current price, Recommended price, Price difference, Price difference (%), and Estimated monthly savings columns are updated to provide a price comparison between the current DB instance type and the instance type of the selected CPU architecture preference. For example, if you choose Graviton (aws-arm64), prices are compared between the current DB instance type and the recommended Graviton-based instance type.

Estimated monthly savings and savings opportunity

Estimated monthly savings (after discounts)

Instance tab

This column lists the approximate monthly cost savings that you experience by migrating your workloads from the current RDS DB instance or type to the recommended type under the Reserved Instances pricing models. To receive recommendations with Reserved Instances discounts, activate the savings estimation mode preference.

Storage tab

This column lists the approximate monthly cost savings that you experience by migrating your RDS DB instance storage volumes from the current specifications to the recommended specifications under specific discounts. To receive recommendations with specific discounts, activate the savings estimation mode preference.

For more information, see Savings estimation mode.

Note

If you don't activate the savings estimation mode preference, this column on both the Instance and Storage tabs display the default On-Demand pricing discount information.

Estimated monthly savings (On-Demand)

Instance tab

This column lists the approximate monthly cost savings that you experience by migrating your workloads from the current RDS DB instance type to the recommended instance type under the On-Demand pricing model.

Storage tab

This column lists the approximate monthly cost savings that you experience by migrating your RDS DB instance storage volumes from the current specifications to the recommended specifications.

Savings opportunity (%)

This column lists the percentage difference between the price of the current instance and the price of the recommended RDS DB instance type. If savings estimation mode is activated, Compute Optimizer analyzes the Reserved Instances pricing discounts to generate the savings opportunity percentage. If savings estimation mode isn’t activated, Compute Optimizer only uses On-Demand pricing information. For more information, see Savings estimation mode.

Important

If you enable Cost Optimization Hub in AWS Cost Explorer, Compute Optimizer uses Cost Optimization Hub data, which includes your specific pricing discounts to generate your recommendations. If Cost Optimization Hub isn't enabled, Compute Optimizer uses Cost Explorer data and On-Demand pricing information to generate your recommendations. For more information, see Enabling Cost Explorer and Cost Optimization Hub in the in the AWS Cost Management User Guide.

Estimated monthly savings calculation

For each recommendation, Compute Optimizer calculate the cost to operate a new RDS DB instance or storage using the recommended specifications. Estimated monthly savings are calculated based on the number of running hours for the current instance or storage and the difference in rates between the current specifications and the recommended specifications. The estimated monthly savings for RDS DB instances and storage that are displayed on the Compute Optimizer dashboard is a sum of the estimated monthly savings for all over-provisioned findings in the account.

Performance risk

The performance risk columns on the RDS DB instance details page and the RDS DB instance recommendations page define the likelihood of the current and recommended instance type not meeting your workload requirements. Compute Optimizer calculates an individual performance risk score for each specification of the current and recommended instance. This includes specifications such as CPU, EBS throughput, and EBS IOPS. The performance risk of the current and recommended instance is calculated as the maximum performance risk score across the analyzed resource specifications.

The values range from very low, low, medium, high, and very high. A very low performance risk means that the instance type is predicted to always provide enough capability. The higher the performance risk means that you should validate whether the instance meets the performance requirements of your workload before migrating your resource. Decide whether to optimize for performance improvement, for cost reduction, or for a combination of these two.

Comparison graphs

The Amazon RDS database details page displays utilization metric graphs for your current and recommended RDS DB instance and storage data for the lookback period. Compute Optimizer uses the maximum utilization point within each 5-minute time interval to generate RDS DB instance and storage recommendations.

You can change the graphs to display data for the last 24 hours, three days, one week, or two weeks. You can also change the statistic of the graphs between average and maximum.

The following comparison graphs are displayed on the RDS DB instance details page.

Amazon RDS

The following graphs are displayed for RDS DB instances:

Graph name Description

CPU utilization

The percentage of allocated compute units that are in use on the DB instance. This metric identifies the processing power that's required to run an application on an instance.

Database connections (count)

The number of client sessions that are connected to the DB instance.

Network receive throughput (MiB/second)

The incoming (receive) network traffic on the DB instance, including both customer database traffic and Amazon RDS traffic used for monitoring and replication.

Network transmit throughput (MiB/second)

The outgoing (transmit) network traffic on the DB instance, including both customer database traffic and Amazon RDS traffic used for monitoring and replication.

EBS read operations (per second)

The average number of disk read I/O operations per second.

EBS write operations (per second)

The average number of disk write I/O operations per second.

EBS read throughput (MiB/second)

The average number of bytes read from disk per second.

EBS write throughput (MiB/second)

The average number of bytes written to disk per second.

EBS IO balance (percent)

The percentage of I/O credits remaining in the burst bucket of your RDS database. This metric is available for basic monitoring only.

EBS Byte Balance (percent)

The percentage of throughput credits remaining in the burst bucket of your RDS database. This metric is available for basic monitoring only.

Free storage space

The amount of available storage space.

DB Load

The level of session activity in your database. For more information, see Database load in the Amazon Relational Database Service User Guide.

Swap in (KB)

The amount of memory, in kilobytes, swapped in from disk.

Swap out (KB)

The amount of memory, in kilobytes, swapped out to disk.

Note

The DB Load, Swap in (KB), and Swap out (KB) metrics are only available if you enabled Amazon RDS Performance Insights. To enable Performance Insights for your DB instances, see Turning Performance Insights on and off for Amazon RDS in the Amazon Relational Database Service User Guide.

Amazon Aurora

The following graphs are displayed for Aurora DB instances:

Graph name Description

CPU utilization

The percentage of CPU used by an Aurora DB instance.

Memory utilization

The percentage of memory allocated by applications and the operating system as used.

Database connections (count)

The number of client sessions that are connected to the DB instance.

Network receive throughput (MiB/second)

The amount of network throughput received from clients by each instance in the Aurora DB cluster. This throughput doesn't include network traffic between instances in the Aurora DB cluster and the cluster volume.

Network transmit throughput (MiB/second)

The amount of network throughput sent to clients by each instance in the Aurora DB cluster. This throughput doesn't include network traffic between instances in the DB cluster and the cluster volume.

Storage network read throughput (MiB/second)

The amount of network throughput received from the Aurora storage subsystem by each instance in the DB cluster.

Storage network write throughput (MiB/second)

The amount of network throughput sent to the Aurora storage subsystem by each instance in the Aurora DB cluster.

Aurora memory health state

Indicates the memory health state. A value of 0 equals NORMAL. A value of 10 equals RESERVED, which means that the server is approaching a critical level of memory usage.

Note

This metric applies to Aurora MySQL only.

Aurora memory number of declined SQL queries

The total number of queries declined as part of out-of-memory (OOM) avoidance.

Note

This metric applies to Aurora MySQL only.

Aurora memory number of connections closed

The total number of connections closed as part of OOM avoidance.

Note

This metric applies to Aurora MySQL only.

Aurora memory number of queries killed

The total number of queries ended as part of OOM avoidance.

Note

This metric applies to Aurora MySQL only.

Buffer cache hit ratio

The percentage of requests that are served by the buffer cache. This graph is shown when an Optimized Reads DB instance class type is recommended an as option to help you evaluate whether it is the right fit for your workload.

Read IOPS ephermal storage

The average number of disk read operations to Ephemeral NVMe storage.

Note

This metric applies to instances that support locally attached non-volatile memory express (NVMe) storage.

Write IOPS ephermal storage

The average number of disk write operations to Ephemeral NVMe storage.

Note

This metric applies to instances that support locally attached non-volatile memory express (NVMe) storage.

Read IOPS

The average number of disk read operations per second.

Write IOPS

The number of Aurora storage write records generated per second. This is more or less the number of log records generated by the database. These do not correspond to 8K page writes, and do not correspond to network packets sent.

DB Load

The number of active sessions for the database. Typically, you want the data for the average number of active sessions. In Performance Insights, this data is queried as db.load.avg.

For more information, see Amazon CloudWatch metrics for Amazon Aurora in the Amazon Aurora User Guide.

Note

The DB Load graph is only available if you enabled Performance Insights for Aurora. To enable Performance Insights for Aurora, see Turning Performance Insights on and off for Aurora in the Amazon Aurora User Guide.