Mejora del rendimiento de las consultas de RDS para MySQL con lecturas optimizadas de Amazon RDS - Amazon Relational Database Service

Mejora del rendimiento de las consultas de RDS para MySQL con lecturas optimizadas de Amazon RDS

Puede lograr un procesamiento de consultas más rápido en RDS para MySQL con las lecturas optimizadas de Amazon RDS. Una instancia de base de datos de RDS para MySQL o un clúster de base de datos Multi-AZ que utilicen lecturas optimizadas de RDS pueden procesar las consultas hasta dos veces más rápido en comparación con una instancia o clúster de base de datos que no las usa.

Información general de las lecturas optimizadas de RDS

Cuando utiliza una instancia de base de datos de RDS para MySQL o un clúster de base de datos Multi-AZ que tienen activadas las lecturas optimizadas de RDS, ambas realizan las consultas más rápido mediante el uso de un almacén de instancias. El almacén de instancias ofrece un almacenamiento de nivel de bloques temporal para la instancia de base de datos o el clúster de base de datos Multi-AZ. El almacenamiento se encuentra en unidades de estado sólido (SSD) de memoria rápida no volátil (NVMe) que están conectadas físicamente al servidor host. Este almacenamiento está optimizado para una latencia baja, un rendimiento de E/S aleatorio alto y un alto rendimiento de lectura secuencial.

Las lecturas optimizadas de RDS se activan de forma predeterminada cuando una instancia de base de datos o un clúster de base de datos Multi-AZ usa una clase de instancia de base de datos con un almacén de instancias, como db.m5d o db.m6gd. Con las lecturas optimizadas de RDS, algunos objetos temporales se almacenan en el almacén de instancias. Estos objetos temporales incluyen archivos temporales internos, tablas temporales internas en disco, archivos de mapas de memoria y archivos de caché de registros binarios (binlog). Para obtener más información sobre el almacén de instancias, consulte Almacén de instancias de Amazon EC2 en la Guía del usuario de Amazon Elastic Compute Cloud para las instancias de Linux.

Las cargas de trabajo que generan objetos temporales en MySQL para el procesamiento de consultas pueden aprovechar el almacén de instancias para procesar las consultas más rápido. Este tipo de carga de trabajo incluye consultas que implican ordenaciones, agregaciones de hash, uniones de alta carga, expresiones de tablas comunes (CTE) y consultas en columnas no indexadas. Estos volúmenes de almacenes de instancias proporcionan mayores IOPS y rendimiento, independientemente de las configuraciones de almacenamiento utilizadas para el almacenamiento persistente de Amazon EBS. Dado que RDS Optimized Reads descarga las operaciones de los objetos temporales al almacén de instancias, ahora las operaciones de entrada/salida por segundo (IOPS) o el rendimiento del almacenamiento persistente (Amazon EBS) se pueden utilizar para operaciones en objetos persistentes. Estas operaciones incluyen las lecturas y escrituras habituales de archivos de datos y las operaciones del motor en segundo plano, como vaciar e insertar combinaciones de búferes.

nota

Tanto las instantáneas de RDS manuales como las automatizadas solo contienen archivos de motor para objetos persistentes. Los objetos temporales creados en el almacén de instancias no se incluyen en las instantáneas de RDS.

Casos de uso de lecturas optimizadas para RDS

Si tiene cargas de trabajo que dependen en gran medida de objetos temporales, como tablas o archivos internos, para ejecutar consultas, puede beneficiarse de activar las lecturas optimizadas de RDS. Los siguientes casos de uso son candidatos a las lecturas optimizadas para RDS:

  • Aplicaciones que ejecutan consultas analíticas con expresiones de tablas comunes (CTE) complejas, tablas derivadas y operaciones de agrupamiento

  • Réplicas de lectura que atienden un tráfico de lectura intenso con consultas no optimizadas

  • Aplicaciones que ejecutan consultas de generación de informes dinámicas o bajo demanda que implican operaciones complejas, como consultas con cláusulas GROUP BY y ORDER BY.

  • Cargas de trabajo que utilizan tablas temporales internas para el procesamiento de consultas

    Puede supervisar la variable de estado del motor created_tmp_disk_tables para determinar el número de tablas temporales basadas en discos que se han creado en la instancia de base de datos.

  • Aplicaciones que crean tablas temporales de gran tamaño, ya sea directamente o en procedimientos, para almacenar resultados intermedios

  • Consultas de bases de datos que agrupan u ordenan columnas no indexadas

Prácticas recomendadas para lecturas optimizadas de RDS

Utilice estas prácticas recomendadas para utilizar lecturas optimizadas de RDS:

  • Añada una lógica de reintento para las consultas de solo lectura en caso de que fallen debido a que el almacén de instancias está lleno durante la ejecución.

  • Supervise el espacio de almacenamiento disponible en el almacén de instancias con la métrica de CloudWatch FreeLocalStorage. Si el almacén de instancias alcanza su límite debido a la carga de trabajo de la instancia de base de datos, modifíquela para usar una clase de instancia de base de datos más grande.

  • Cuando la instancia de base de datos o el clúster de base de datos Multi-AZ tenga memoria suficiente pero siga alcanzando el límite de almacenamiento del almacén de instancias, aumente el valor binlog_cache_size para mantener en la memoria las entradas del binlog específicas de la sesión. Esta configuración impide escribir las entradas de binlog en los archivos temporales de caché de binlog en el disco.

    El parámetro binlog_cache_size es específico de la sesión. Puede cambiar el valor para cada nueva sesión. La configuración de este parámetro puede aumentar la utilización de memoria en la instancia de base de datos durante los picos de carga de trabajo. Por lo tanto, considere aumentar el valor del parámetro en función del patrón de carga de trabajo de la aplicación y de la memoria disponible en la instancia de base de datos.

  • Utilice el valor predeterminado de MIXED para el binlog_format. Según el tamaño de las transacciones, si se establece binlog_format en ROW se pueden generar archivos de caché binlog de gran tamaño en el almacén de instancias.

  • Defina el parámetro internal_tmp_mem_storage_engine en TempTable y configure el parámetro temptable_max_mmap para que coincida con el tamaño del almacenamiento disponible en el almacén de instancias.

  • Evite realizar cambios masivos en una sola transacción. Estos tipos de transacciones pueden generar archivos de caché binlog de gran tamaño en el almacén de instancias y pueden causar problemas cuando el almacén de instancias está lleno. Considere la posibilidad de dividir las escrituras en varias transacciones pequeñas para minimizar el uso de almacenamiento de los archivos de caché binlog.

  • Utilice el valor predeterminado de ABORT_SERVER para el parámetro binlog_error_action. De este modo, se evitan problemas con el registro binario en las instancias de base de datos con las copias de seguridad habilitadas.

Uso de lecturas optimizadas de RDS

Al aprovisionar una instancia de base de datos de RDS para MySQL con una de las siguientes clases de instancia de base de datos en una implementación de instancia de base de datos Single-AZ, en una implementación de instancia de base de datos Multi-AZ o en una implementación de clúster de base de datos Multi-AZ, la instancia de base de datos utiliza automáticamente lecturas optimizadas de RDS.

Para activar las lecturas optimizadas de RDS, realice una de las siguientes acciones:

Las lecturas optimizadas de RDS están disponibles en todas las Regiones de AWS donde se admite una o más de las clases de instancia de base de datos con almacenamiento SSD NVMe local. Para obtener información acerca de las clases de instancia de base de datos, consulte Clases de instancia de base de datos de .

La disponibilidad de las clases de instancia de base de datos es diferente en las Regiones de AWS. Para determinar si una clase de instancia de base de datos se admite en una Región de AWS específica, consulte Determinación de la compatibilidad de la clase de instancia de base de datos en Regiones de AWS.

Si no desea utilizar lecturas optimizadas de RDS, modifique la instancia de base de datos o el clúster de base de datos Multi-AZ para que no utilice una clase de instancia de base de datos que admita la característica.

Supervisión de instancias de base de datos que utilizan lecturas optimizadas de RDS

Puede supervisar las instancias de base de datos que utilizan lecturas optimizadas de RDS con las siguientes métricas de CloudWatch:

  • FreeLocalStorage

  • ReadIOPSLocalStorage

  • ReadLatencyLocalStorage

  • ReadThroughputLocalStorage

  • WriteIOPSLocalStorage

  • WriteLatencyLocalStorage

  • WriteThroughputLocalStorage

Estas métricas proporcionan datos sobre el almacén de instancias disponible, las IOPS y el rendimiento. Para obtener más información sobre estas métricas, consulte Métricas de nivel de instancia de Amazon CloudWatch para Amazon RDS.

Limitaciones de las lecturas optimizadas de RDS

Las limitaciones siguientes se aplican a las lecturas optimizadas de RDS:

  • Las lecturas optimizadas de RDS son compatibles con RDS para MySQL versión 8.0.28 y posteriores. Para obtener más información acerca de las versiones de RDS para MySQL, consulte Versiones de MySQL en Amazon RDS.

  • No puede cambiar la ubicación de los objetos temporales al almacenamiento persistente (Amazon EBS) en las clases de instancias de base de datos que admiten lecturas optimizadas de RDS.

  • Cuando se habilita el registro binario en una instancia de base de datos, el tamaño máximo de transacción está limitado por el tamaño del almacén de instancias. En MySQL, cualquier sesión que requiera más almacenamiento que el valor de binlog_cache_size escribe los cambios de transacciones en archivos de caché binlog temporales, que se crean en el almacén de instancias.

  • Las transacciones pueden fallar cuando el almacén de instancias está lleno.