Recommendations from Amazon RDS reference - Amazon Relational Database Service

Recommendations from Amazon RDS reference

Amazon RDS generates recommendations for a resource when the resource is created or modified. You can find examples of recommendations from Amazon RDS 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 for Amazon RDS

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 Converting a DB instance to a Multi-AZ deployment for Amazon RDS

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 tuning the database workload to reduce IOPS or scale up the DB instance to a type with a higher default IOPS limit. The current DB instance can't support the Provisioned IOPS, or the database workload has high IOPS utilization.

Use a DB instance type with higher default IOPS limits

Yes

Amazon RDS instance types

Amazon RDS DB instance storage

Database load

RDS instances have under-provisioned Amazon EBS volumes

We recommend tuning the database workload to reduce IOPS or increase the Provisioned IOPS for the database. When IOPS utilization approaches the Provisioned IOPS, database performance might decline.

Provision more IOPS for the DB instance

Yes

Amazon RDS instance types

Amazon RDS DB instance storage

Database load

RDS instances are under-provisioned for throughput capacity

We recommend tuning the database workload to reduce throughput or increase the provisioned throughput for the database. When throughput utilization approaches the provisioned throughput, database performance might be impacted.

Provision more throughput for the DB instance

Yes

Amazon RDS instance types

Amazon RDS DB instance storage

Database load

RDS instances are under-provisioned for EBS I/O

We recommend tuning the database workload to reduce I/O operations or modifying the DB instance to use Amazon RDS io2 Block Express volumes which are designed for database workloads that require high performance, high throughput, and low latency. With the current workload, the database might not be able to process I/O operations at the required rate which can lead to performance degradation.

Use Amazon RDS io2 Block Express volumes for the RDS instance

No

Amazon RDS DB instance storage

Amazon CloudWatch metrics for Amazon RDS

Provisioned IOPS SSD volumes in the Amazon EBS User Guide