Viewing Amazon RDS recommendations - Amazon Relational Database Service

Viewing Amazon RDS recommendations

Amazon RDS generates recommendations for a resource when the resource is created or modified.

The configuration based recommendations are supported in the following regions:

  • US East (Ohio)

  • US East (N. Virginia)

  • US West (N. California)

  • US West (Oregon)

  • Asia Pacific (Mumbai)

  • Asia Pacific (Seoul)

  • Asia Pacific (Singapore)

  • Asia Pacific (Sydney)

  • Asia Pacific (Tokyo)

  • Canada (Central)

  • Europe (Frankfurt)

  • Europe (Ireland)

  • Europe (London)

  • Europe (Paris)

  • South America (São Paulo)

You can find examples of the configuration based recommendations in the following table.

Type Description Recommendation Downtime required Additional information

Magnetic volume is in use

Your DB instances are using magnetic storage. Magnetic storage isn't recommended for most of the DB instances. Choose a different storage type: General Purpose (SSD) or Provisioned IOPS.

Choose a different storage type: General Purpose (SSD) or Provisioned IOPS.

Yes

Previous generation volumes in the Amazon EC2 documentation.

Resource Automated backups is turned off

Automated backups aren't turned on for your DB instances. Automated backups are recommended because they enable point-in-time recovery of your DB instances.

Turn on automated backups with a retention period of up to 14 days.

Yes

Enabling automated backups

Demystifying Amazon RDS backup storage costs on the AWS Database Blog

Engine minor version upgrade is required

Your database resources aren't running the latest minor DB engine version. The latest minor version contains the latest security fixes and other improvements.

Upgrade to latest engine version.

Yes

Upgrading a DB instance engine version

Enhanced Monitoring is turned off

Your database resources don't have Enhanced Monitoring turned on. Enhanced Monitoring provides real-time operating system metrics for monitoring and troubleshooting.

Turn on Enhanced Monitoring.

No

Monitoring OS metrics with Enhanced Monitoring

Storage encryption is turned off

Amazon RDS supports encryption at rest for all the database engines by using the keys that you manage in AWS Key Management Service (AWS KMS). On an active DB instance with Amazon RDS encryption, the data stored at rest in the storage is encrypted, similar to automated backups, read replicas, and snapshots.

If encryption isn't turned on while creating a DB instance, you will need to create and restore an encrypted copy of the decrypted snapshot of the DB instance before you turn on the encryption.

Turn on encryption of data at rest for your DB instance.

Yes

Security in Amazon RDS

Copying a DB snapshot

Performance Insights is turned off

Performance Insights monitors your DB instance load to help you analyze and resolve database performance issues. We recommend that you turn on Performance Insights.

Turn on Performance Insights.

No

Monitoring DB load with Performance Insights on Amazon RDS

DB instances have storage autoscaling turned off

Storage autoscaling isn't turned on for your DB instance. When the database workload increases, RDS storage autoscaling automatically scales the storage capacity with zero downtime.

Turn on Amazon RDS storage autoscaling with a specified maximum storage threshold

No

Managing capacity automatically with Amazon RDS storage autoscaling

RDS resources major versions update is required

Databases with the current major version for the DB engine won't be supported. We recommend that you upgrade to the latest major version which includes new functionality and enhancements.

Upgrade to the latest major version for the DB engine.

Yes

Upgrading a DB instance engine version

Using Amazon RDS Blue/Green Deployments for database updates

RDS resources instance class update is required

Your DB instance is running an earlier generation DB instance class. We have replaced DB instance classes from an earlier generation with DB instance classes with better cost, performance, or both. We recommend that you run your DB instance with a DB instance class from a newer generation.

Upgrade the DB instance class.

Yes

Supported DB engines for DB instance classes

RDS resources using end of support engine edition under license-included

We recommend that you upgrade the major version to the latest engine version supported by Amazon RDS to continue with the current license support. The engine version of your database won't be supported with the current license.

We recommend that you upgrade your database to the latest supported version in Amazon RDS to continue using the licensed model.

Yes

Oracle major version upgrades

DB instances not using Multi-AZ deployment

We recommend that you use Multi-AZ deployment. The Multi-AZ deployments enhance the availability and durability of the DB instance.

Set up Multi-AZ for the impacted DB instances

No

Downtime doesn't occur during this change. However, there is a possible performance impact. For more information, see Modifying a DB instance to be a Multi-AZ DB instance deployment

Pricing for Amazon RDS Multi-AZ

DB memory parameters are diverging from default

The memory parameters of the DB instances are significantly different from the default values. These settings can impact performance and cause errors.

We recommend that you reset the custom memory parameters for the DB instance to their default values in the DB parameter group.

Reset the memory parameters to their default values.

No

Best practices for configuring performance parameters for Amazon RDS for MySQL on the AWS Database Blog

InnoDB_Change_Buffering parameter using less than optimum value

Change buffering allows a MySQL DB instance to defer a few writes, which are required to maintain secondary indexes. This feature was useful in environments with slow disks. The change buffering configuration improved the DB performance slightly but caused a delay in crash recovery and long shutdown times during upgrade.

Set InnoDB_Change_Buffering parameter value to NONE in your DB parameter groups.

No

Best practices for configuring performance parameters for Amazon RDS for MySQL on the AWS Database Blog

Query cache parameter is turned on

When changes require that your query cache is purged, your DB instance will appear to stall. Most workloads don't benefit from a query cache. The query cache was removed from MySQL version 8.0. We recommend that you set the query_cache_type parameter to 0.

Set the query_cache_type parameter value to 0 in your DB parameter groups.

Yes

Best practices for configuring performance parameters for Amazon RDS for MySQL on the AWS Database Blog

log_output parameter is set to table

When log_output is set to TABLE, more storage is used than when log_output is set to FILE. We recommend that you set the parameter to FILE, to avoid reaching the storage size limit.

Set the log_output parameter value to FILE in your DB parameter groups.

No

MySQL database log files

Parameter groups not using huge pages

Large pages can increase database scalability, but your DB instance isn't using large pages. We recommend that you set the use_large_pages parameter value to ONLY in the DB parameter group for your DB instance.

Set the use_large_pages parameter value to ONLY in your DB parameter groups.

Yes

Turning on HugePages for an RDS for Oracle instance

autovacuum parameter is turned off

The autovacuum parameter is turned off for your DB instances. Turning autovacuum off increases the table and index bloat and impacts the performance.

We recommend that you turn on autovacuum in your DB parameter groups.

Turn on the autovacuum parameter in your DB parameter groups.

No

Understanding autovacuum in Amazon RDS for PostgreSQL environments on the AWS Database Blog

synchronous_commit parameter is turned off

When synchronous_commit parameter is turned off, data can be lost in a database crash. The durability of the database is at risk.

We recommend that you turn on the synchronous_commit parameter.

Turn on synchronous_commit parameter in your DB parameter groups.

Yes

Amazon Aurora PostgreSQL parameters: Replication, security, and logging on the AWS Database Blog

track_counts parameter is turned off

When the track_counts parameter is turned off, the database doesn't collect the database activity statistics. Autovacuum requires these statistics to work correctly.

We recommend that you set track_counts parameter to 1.

Set track_counts parameter to 1.

No

Run-time Statistics for PostgreSQL

enable_indexonlyscan parameter is turned off

The query planner or optimizer can't use the index-only scan plan type when it is turned off.

We recommend that you set the enable_indexonlyscan parameter value to 1.

Set the enable_indexonlyscan parameter value to 1.

No

Planner Method Configuration for PostgreSQL

enable_indexscan parameter is turned off

The query planner or optimizer can't use the index scan plan type when it is turned off.

We recommend that you set the enable_indexscan value to 1.

Set the enable_indexscan parameter value to 1.

No

Planner Method Configuration for PostgreSQL

innodb_flush_log_at_trx parameter is turned off

The value of the innodb_flush_log_at_trx parameter of your DB instance isn't safe value. This parameter controls the persistence of commit operations to disk.

We recommend that you set the innodb_flush_log_at_trx parameter to 1.

Set the innodb_flush_log_at_trx parameter value to 1.

No

Best practices for configuring performance parameters for Amazon RDS for MySQL on the AWS Database Blog

sync_binlog parameter is turned off

The synchronization of the binary log to disk isn't enforced before the transaction commits are acknowledged in your DB instance.

We recommend that you set the sync_binlog parameter value to 1.

Set the sync_binlog parameter value to 1.

No

Best practices for configuring replication parameters for Amazon RDS for MySQL on the AWS Database Blog

innodb_stats_persistent parameter is turned off

Your DB instance isn't configured to persist the InnoDB statistics to the disk. When the statistics aren't stored, they are recalculated each time the instance restarts and the table accessed. This leads to variations in the query execution plan. You can modify the value of this global parameter at the table level.

We recommend that you set the innodb_stats_persistent parameter value to ON.

Set the innodb_stats_persistent parameter value to ON.

No

Best practices for configuring performance parameters for Amazon RDS for MySQL on the AWS Database Blog

innodb_open_files parameter is low

The innodb_open_files parameter controls the number of files InnoDB can open at one time. InnoDB opens all of the log and system tablespace files when mysqld is running.

Your DB instance has a low value for the maximum number of files InnoDB can open at one time. We recommend that you set the innodb_open_files parameter to a minimum value of 65.

Set the innodb_open_files parameter to a minimum value of 65.

Yes

InnoDB open files for MySQL

max_user_connections parameter is low

Your DB instance has a low value for the maximum number of simultaneous connections for each database account.

We recommend setting the max_user_connections parameter to a number greater than 5.

Increase the value of the max_user_connections parameter to a number greater than 5.

Yes

Setting Account Resource Limits for MySQL

Read Replicas are open in writable mode

Your DB instance has a read replica in writable mode, which allows updates from clients.

We recommend that you set the the read_only parameter to TrueIfReplica so that the read replicas isn't in writable mode.

Set the read_only parameter value to TrueIfReplica.

No

Best practices for configuring replication parameters for Amazon RDS for MySQL on the AWS Database Blog

innodb_default_row_format parameter setting is unsafe

Your DB instance encounters a known issue: A table created in a MySQL version lower than 8.0.26 with the row_format set to COMPACT or REDUNDANT will be inaccessible and unrecoverable when the index exceeds 767 bytes.

We recommend that you set the innodb_default_row_format parameter value to DYNAMIC.

Set the innodb_default_row_format parameter value to DYNAMIC.

No

Changes in MySQL 8.0.26

general_logging parameter is turned on

The general logging is turned on for your DB instance. This setting is useful while troubleshooting the database issues. However, turning on general logging increases the amount of I/O operations and allocated storage space, which might result in contention and performance degradation.

Check your requirements for general logging usage. We recommend that you set the general_logging parameter value to 0.

Check your requirements for general logging usage. If it isn't mandatory, we recommend that you to set the general_logging parameter value to 0.

No

Overview of RDS for MySQL database logs

RDS instance under-provisioned for system memory capacity

We recommend that you tune your queries to use lesser memory or use a DB instance type with higher allocated memory. When the instance is running low on memory, then the database performance is impacted.

Use a DB instance with higher memory capacity

Yes

Scaling Your Amazon RDS Instance Vertically and Horizontally on the AWS Database Blog

Amazon RDS instance types

Amazon RDS pricing

RDS instance under-provisioned for system CPU capacity

We recommend that you tune your queries to use less CPU or modify your DB instance to use a DB instance class with higher allocated vCPUs. Database performance might decline when a DB instance is running low on CPU.

Use a DB instance with higher CPU capacity

Yes

Scaling Your Amazon RDS Instance Vertically and Horizontally on the AWS Database Blog

Amazon RDS instance types

Amazon RDS pricing

RDS resources are not utilizing connection pooling correctly

We recommend that you enable Amazon RDS Proxy to efficiently pool and share existing database connections. If you are already using a proxy for your database, configure it correctly to improve connection pooling and load balancing across multiple DB instances. RDS Proxy can help reduce the risk of connection exhaustion and downtime while improving availability and scalability.

Enable RDS Proxy or modify your existing proxy configuration

No

Scaling Your Amazon RDS Instance Vertically and Horizontally on the AWS Database Blog

Using Amazon RDS Proxy

Amazon RDS Proxy Pricing

RDS instances are creating excessive temporary objects

We recommend that you tune your workload to prevent creating excessive temporary objects, or switch to RDS instance classes supporting optimized reads. RDS Optimized Reads improves database performance for workloads involving a large number of temporary objects and/or large temporary objects. Evaluate your workload to determine if using an instance with RDS Optimized Reads benefits your database workload.

Use a DB instance type with RDS Optimized Reads

Yes

Amazon RDS instance types

Improving query performance for RDS for MySQL with Amazon RDS Optimized Reads

Improving query performance for RDS for MariaDB with Amazon RDS Optimized Reads

Improving query performance for RDS for PostgreSQL with Amazon RDS Optimized Reads

RDS instances are under-provisioned for system IOPS capacity

We recommend using an instance class with a higher default IOPS limit, as you have provisioned more IOPS on Amazon EBS than your current instance class can support. Using an instance class with a supported IOPS limit lower than the provisioned Amazon EBS IOPS prevents you from utilizing the full potential of provisioned Amazon EBS IOPS.

Use a DB instance type with higher default IOPS limits

Yes

Amazon RDS instance types

Amazon RDS DB instance storage

Database load

Using the Amazon RDS console, you can view Amazon RDS recommendations for your database resources.

To view the Amazon RDS recommendations
  1. Sign in to the AWS Management Console and open the Amazon RDS console at https://console.aws.amazon.com/rds/.

  2. In the navigation pane, do any of the following:

    • Choose Recommendations. The number of active recommendations for your resources and the number of recommendations with the highest severity is available next to Recommendations. To find the number of active recommendations for each severity, choose the number that shows the higest severity.

      
                        Select Recommendations in the console

      The Recommendations page displays a list of recommendations sorted by the severity for all the resources in your account.

      
                        Main Recommendations page in the console which contains all the recommendations

      You can choose a recommendation to view a section at the bottom of the page which contains the affected resources and details of how the recommendation will be applied.

    • In the Databases page, choose Recommendations for a resource.

      
                                Recommendation option selected on Databases page in the console

      The Recommendations tab displays the recommendations and its details for the selected resource.

      
                        Recommendations tab on Databases page in the console

    The following details are available for the recommendations:

    • Severity – The implication level of the issue. The severity levels are High, Medium, Low, and Informational.

    • Detection – The number of affected resources and a short description of the issue. Choose this link to view the recommendation and the analysis details.

    • Recommendation – A short description of the recommended action to apply.

    • Impact – A short description of the possible impact when the recommendation isn't applied.

    • Category – The type of recommendation. The categories are Performance efficiency, Security, Reliability, Cost optimization, Operational excellence, and Sustainability.

    • Status – The current status of the recommendation. The possible statuses are All, Active, Dismissed, Resolved, and Pending.

    • Start time – The time when the issue began. For example, 18 hours ago.

    • Last modified – The time when the recommendation was last updated by the system because of a change in the Severity, or the time you responded to the recommendation. For example, 10 hours ago.

    • End time – The time when the issue ended. The time won't display for any continuing issues.

    • Resource identifier – The name of one or more resources.

  3. (Optional) Choose Severity or Category operators in the field to filter the list of recommendations.

    
                        Recommendations page with severity operation in the console.

    The recommendations for the selected operation appear.

  4. (Optional) Choose any of the following recommendation status:

    • Active (default) – Shows the current recommendations that you can apply, schedule it for the next maintenance window, or dismiss.

    • All – Shows all the recommendations with the current status.

    • Dismissed – Shows the dismissed recommendations.

    • Resolved – Shows the recommendations that are resolved.

    • Pending – Shows the recommendations whose recommended actions are in progress or scheduled for the next maintenance window.

    
                                Recommendations filtered by status in the console
  5. (Optional) Choose Relative mode or Absolute mode in Last modified to modify the time period to display the recommendations. In the Absolute mode, you can choose the time period, or enter the time in Start date and End date fields.

    
                        Recommendations filtered by time period in the console

    The recommendations for the set time period display.

  6. (Optional) Choose Preferences in the right to customize the details to display. You can choose a page size, wrap the lines of the text, and allow or hide the columns.

  7. (Optional) Choose a recommendation and then choose View details.

    
                        Recommendations page in the console with a selected recommendation and view details button chosen.

    The recommendation details page appears. The title provides the total count of the resources with the issue detected and the severity.

    For information about the components on the details page for an anomaly based reactive recommendation, see Viewing reactive anomalies in the Amazon DevOps Guru User Guide.

    For information about the components on the details page for a threshold based proactive recommendation, see Viewing Performance Insights proactive recommendations.

    The other automated recommendations display the following components on the recommendation details page:

    • Recommendation – A summary of the recommendation and whether downtime is required to apply the recommendation.

      
                                Recommendations details page showing Recommendation section in the console.
    • Resources affected – Details of the affected resources.

      
                                Recommendations details page showing Resources Affected section in the console.
    • Recommendation details – Supported engine information, any required associated cost to apply the recommendation, and documentation link to learn more.

      
                                Recommendations details page showing Recommendation details section in the console.

To view Amazon RDS recommendations of the DB instances, use the following command in AWS CLI.

aws rds describe-db-recommendations

To view Amazon RDS recommendations using the Amazon RDS API, use the DescribeDBRecommendations operation.