

# Mejora del rendimiento de las consultas de RDS para PostgreSQL con lecturas optimizadas para Amazon RDS
<a name="USER_PostgreSQL.optimizedreads"></a>

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.

**Topics**
+ [Información general de las lecturas optimizadas para RDS en PostgreSQL](#USER_PostgreSQL.optimizedreads-overview)
+ [Casos de uso de lecturas optimizadas para RDS](#USER_PostgreSQL.optimizedreads-use-cases)
+ [Prácticas recomendadas para lecturas optimizadas de RDS](#USER_PostgreSQL.optimizedreads-best-practices)
+ [Uso de lecturas optimizadas de RDS](#USER_PostgreSQL.optimizedreads-using)
+ [Supervisión de instancias de base de datos que utilizan lecturas optimizadas de RDS](#USER_PostgreSQL.optimizedreads-monitoring)
+ [Limitaciones de las lecturas optimizadas para RDS en PostgreSQL](#USER_PostgreSQL.optimizedreads-limitations)

## Información general de las lecturas optimizadas para RDS en PostgreSQL
<a name="USER_PostgreSQL.optimizedreads-overview"></a>

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 al usar clases de instancias de base de datos basadas en NVMe. Para ver las especificaciones de hardware que indican qué instancias utilizan NVMe, consulte [Especificaciones de hardware para clases de instancia de base de datos ](Concepts.DBInstanceClass.Summary.md).

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 Consola de administración de AWS para apuntar a cualquier espacio de tablas que no sea `rds_temp_tablespace`. Para obtener más información, consulte [Modificación de los parámetros de un grupo de parámetros de base de datos en Amazon RDS](USER_WorkingWithParamGroups.Modifying.md). 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
<a name="USER_PostgreSQL.optimizedreads-use-cases"></a>

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
<a name="USER_PostgreSQL.optimizedreads-best-practices"></a>

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
<a name="USER_PostgreSQL.optimizedreads-using"></a>

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 sobre la implementación multi-AZ, consulte [Configuración y administración de una implementación multi-AZ para Amazon RDS](Concepts.MultiAZ.md).

Para activar las lecturas optimizadas de RDS, realice una de las siguientes acciones:
+ Para crear una instancia de base de datos de RDS para PostgreSQL o un clúster de base de datos Multi-AZ, utilice una de las clases de instancia de base de datos basadas en NVMe. Para obtener más información, consulte [Creación de una instancia de base de datos de Amazon RDS](USER_CreateDBInstance.md).
+ Modifique una instancia de base de datos de RDS para PostgreSQL o un clúster de base de datos Multi-AZ para utilizar una de las clases de instancia de base de datos basadas en NVMe. Para obtener más información, consulte [Modificación de una instancia de base de datos de Amazon RDS](Overview.DBInstance.Modifying.md).

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 ](Concepts.DBInstanceClass.md).

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](Overview.DBInstance.Modifying.md).

## Supervisión de instancias de base de datos que utilizan lecturas optimizadas de RDS
<a name="USER_PostgreSQL.optimizedreads-monitoring"></a>

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](rds-metrics.md#rds-cw-metrics-instance).

Para supervisar el uso actual del almacenamiento local, inicie sesión en la base de datos y ejecute 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 [Administración de archivos temporales con PostgreSQL](PostgreSQL.ManagingTempFiles.md).

## Limitaciones de las lecturas optimizadas para RDS en PostgreSQL
<a name="USER_PostgreSQL.optimizedreads-limitations"></a>

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.