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

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

Puede lograr un procesamiento de consultas más rápido en RDS para PostgreSQL con las lecturas optimizadas para Amazon RDS. Una instancia de base de datos de RDS para PostgreSQL o un clúster de base de datos Multi-AZ que utilice lecturas optimizadas para RDS puede procesar las consultas hasta un 50 % más rápido en comparación con una instancia que no las use.

Información general de las lecturas optimizadas para RDS en PostgreSQL

Las lecturas optimizadas están disponibles de forma predeterminada en RDS para PostgreSQL versiones 15.2 y posteriores, 14.7 y posteriores y 13.10 y posteriores.

Cuando utiliza una instancia de base de datos de RDS para PostgreSQL o un clúster de base de datos Multi-AZ que tiene activadas las lecturas optimizadas para RDS, consigue un rendimiento de consulta hasta un 50 % más rápido utilizando el almacenamiento local a nivel de bloque basado en unidades de estado sólido (SSD) de memoria rápida no volátil (NVMe). Puede procesar las consultas más rápido si coloca las tablas temporales generadas por PostgreSQL en el almacenamiento local, lo que reduce el tráfico a Elastic Block Storage (EBS) a través de la red.

En PostgreSQL, los objetos temporales se asignan a un espacio de nombres temporal que se elimina automáticamente al final de la sesión. Al borrar el espacio de nombres temporal, se eliminan todos los objetos que dependen de la sesión, incluidos los objetos que cumplen los requisitos del esquema, como tablas, funciones, operadores o incluso extensiones.

En RDS para PostgreSQL, el parámetro temp_tablespaces se configura para esta área de trabajo temporal donde se almacenan los objetos temporales.

Las siguientes consultas devuelven el nombre del espacio de tablas y su ubicación.

postgres=> show temp_tablespaces; temp_tablespaces --------------------- rds_temp_tablespace (1 row)

rds_temp_tablespace es un espacio de tabla configurado por RDS que apunta hacia el almacenamiento local de NVMe. Siempre puede volver al almacenamiento de Amazon EBS modificando este parámetro en el Parameter group con la AWS Management Console para apuntar a cualquier espacio de tablas que no sea rds_temp_tablespace. Para obtener información, consulte Modificación de parámetros de un grupo de parámetros de base de datos. También puede utilizar el comando SET para modificar el valor del parámetro temp_tablespaces a pg_default a nivel de sesión. La modificación del parámetro redirige el área de trabajo temporal a Amazon EBS. Resulta útil volver a Amazon EBS cuando el almacenamiento local de la instancia o el clúster de RDS no es suficiente para realizar una operación SQL específica.

postgres=> SET temp_tablespaces TO 'pg_default'; SET
postgres=> show temp_tablespaces; temp_tablespaces ------------------ pg_default

Casos de uso de lecturas optimizadas para RDS

Estos son algunos casos de uso que pueden beneficiarse de las lecturas optimizadas:

  • Consultas analíticas que incluyen expresiones comunes de tabla (CTE), tablas derivadas y operaciones de agrupación.

  • Réplicas de lectura que gestionan consultas no optimizadas de una aplicación.

  • Consultas de informes dinámicas o bajo demanda con operaciones complejas, como GROUP BY y ORDER BY, que no siempre pueden utilizar los índices adecuados.

  • Otras cargas de trabajo que utilizan tablas temporales internas.

  • Operaciones CREATE INDEX o REINDEX de ordenación.

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 está alcanzando su límite debido a la carga de trabajo de la instancia de base de datos o del clúster de base de datos Multi-AZ, modifíquelo para usar una clase de instancia de base de datos más grande.

Uso de lecturas optimizadas de RDS

Al aprovisionar una instancia de base de datos RDS para PostgreSQL con una de las clases de instancia de base de datos basadas en NVMe 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 obtener más información acerca de la implementación multi-AZ, consulte Configuración y administración de una implementación multi-AZ.

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 más información, consulte Clases de instancia de base de datos de .

Para volver a una instancia de RDS con lecturas no optimizadas, modifique la clase de instancia de base de datos de su instancia de RDS o del clúster por una clase de instancia similar que solo admita el almacenamiento de EBS para las cargas de trabajo de la base de datos. Por ejemplo, si la clase de instancia de base de datos actual es db.r6gd.4xlarge, elija db.r6g.4xlarge para volver atrás. Para obtener más información, consulte Modificación de una instancia de base de datos de Amazon RDS.

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 para 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.

Para supervisar el uso actual del almacenamiento local, inicie sesión en la base de datos mediante la siguiente consulta:

SELECT spcname AS "Name", pg_catalog.pg_size_pretty(pg_catalog.pg_tablespace_size(oid)) AS "size" FROM pg_catalog.pg_tablespace WHERE spcname IN ('rds_temp_tablespace');

Para obtener más información sobre los archivos temporales y su uso, consulte Managing temporary files with PostgreSQL (Administración de archivos temporales con PostgreSQL).

Limitaciones de las lecturas optimizadas para RDS en PostgreSQL

Las limitaciones siguientes se aplican a las lecturas optimizadas para RDS en PostgreSQL:

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