Amélioration des performances des requêtes pour RDS for PostgreSQL avec Lectures optimisées pour Amazon RDS - Amazon Relational Database Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Amélioration des performances des requêtes pour RDS for PostgreSQL avec Lectures optimisées pour Amazon RDS

Vous pouvez accélérer le traitement des requêtes pour RDS for PostgreSQL avec Lectures optimisées pour Amazon RDS. Une instance de base de données ou un cluster de bases de données multi-AZ RDS for PostgreSQL qui utilise la fonctionnalité Lectures optimisées pour RDS peut traiter les requêtes jusqu'à 50 % plus rapidement qu'une instance ou un cluster qui ne l'utilise pas.

Présentation de Lectures optimisées pour RDS dans PostgreSQL

Les lectures optimisées sont disponibles par défaut sur RDS pour les versions 15.2 et supérieures, 14.7 et supérieures, et 13.10 et supérieures de PostgreSQL.

Lorsque vous utilisez une instance de base de données ou un cluster de bases de données multi-AZ RDS for PostgreSQL avec la fonctionnalité Lectures optimisées pour RDS activée, des performances de requête jusqu'à 50 % plus rapides sont obtenues grâce au stockage local de niveau bloc, de type SSD (Solid State Drive), basé sur NVMe (Non-Volatile Memory Express). Vous pouvez accélérer le traitement des requêtes en plaçant les tables temporaires générées par PostgreSQL sur le stockage local, ce qui réduit le trafic vers Elastic Block Storage (EBS) sur le réseau.

Dans PostgreSQL, les objets temporaires sont affectés à un espace de noms temporaire qui est automatiquement supprimé à la fin de la session. Lors de la suppression, l'espace de noms temporaire supprime tous les objets qui dépendent de la session, y compris les objets qualifiés selon le schéma, tels que les tables, les fonctions, les opérateurs ou même les extensions.

Dans RDS for PostgreSQL, le paramètre temp_tablespaces est configuré pour cette zone de travail temporaire dans laquelle les objets temporaires sont stockés.

Les requêtes suivantes renvoient le nom de l'espace de table et son emplacement.

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

rds_temp_tablespace est un espace de table configuré par RDS qui pointe vers le stockage local NVMe. Vous pouvez toujours revenir au stockage Amazon EBS en modifiant ce paramètre dans le Parameter group en utilisant la AWS Management Console pour pointer vers un espace de table autre que rds_temp_tablespace. Pour plus d'informations, consultez Modification de paramètres dans un groupe de paramètres de bases de données. Vous pouvez également utiliser la commande SET pour modifier la valeur du paramètre temp_tablespaces sur pg_default au niveau de la session à l'aide de la commande SET. La modification du paramètre redirige la zone de travail temporaire vers Amazon EBS. Le retour à Amazon EBS est utile lorsque le stockage local de votre instance ou cluster RDS n'est pas suffisant pour effectuer une opération SQL spécifique.

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

Cas d'utilisation pour RDS Optimized Reads

Voici quelques cas d'utilisation pour lesquels Lectures optimisées est utilisé :

  • Requêtes d'application avec des expressions de table communes (CTE), des tables dérivées et des opérations de regroupement complexes.

  • Réplicas en lecture qui gèrent les requêtes non optimisées pour une application.

  • Requêtes de création de rapports dynamiques ou à la demande avec des opérations complexes telles que GROUP BY et ORDER BY qui ne peuvent pas toujours utiliser les index appropriés.

  • Autres charges de travail utilisant des tables temporaires internes.

  • CREATE INDEXou REINDEX des opérations de tri.

Bonnes pratiques relatives à RDS Optimized Reads

Utilisez les bonnes pratiques suivantes pour RDS Optimized Reads :

  • Ajoutez une logique de nouvelle tentative pour les requêtes en lecture seule au cas où elles échoueraient en raison d'un stockage d'instances complet pendant l'exécution.

  • Surveillez l'espace de stockage disponible sur le magasin d'instances à l'aide de la CloudWatch métriqueFreeLocalStorage. Si le stockage d'instances atteint sa limite en raison de la charge de travail sur l'instance de base de données ou le cluster de bases de données multi-AZ, modifiez l'instance ou le cluster pour utiliser une plus grande classe d'instances de base de données.

Utilisation de RDS Optimized Reads

Lorsque vous provisionnez une instance de base de données RDS for PostgreSQL avec l'une des classes d'instances de base de données basées sur NVMe dans le cadre d'un déploiement d'instance de base de données mono-AZ ou multi-AZ, ou d'un déploiement de cluster de bases de données multi-AZ, l'instance de base de données utilise automatiquement la fonctionnalité Lectures optimisées pour RDS.

Pour plus d'informations sur le déploiement multi-AZ, consultez Configuration et gestion d'un déploiement multi-AZ.

Pour activer RDS Optimized Reads, effectuez l'une des actions suivantes :

  • Créez une instance de base de données ou un cluster de bases de données multi-AZ RDS for PostgreSQL en utilisant l'une des classes d'instances de base de données basées sur NVMe. Pour plus d'informations, consultez Création d'une instance de base de données Amazon RDS.

  • Modifiez une instance de base de données ou un cluster de bases de données multi-AZ RDS for PostgreSQL existant afin d'utiliser l'une des classes d'instances de base de données basées sur NVMe. Pour plus d'informations, consultez Modification d'une instance de base de données Amazon RDS.

La fonctionnalité Lectures optimisées pour RDS est disponible dans toutes les Régions AWS où une ou plusieurs des classes d'instances de base de données avec stockage SSD NVMe local sont prises en charge. Pour plus d'informations, consultez Classes d'instances de base de données .

Pour revenir à une instance RDS aux lectures non optimisées, modifiez la classe d'instances de base de données de votre instance ou cluster RDS pour spécifier la classe d'instances similaire qui prend en charge uniquement le stockage EBS pour vos charges de travail de base de données. Par exemple, si la classe d'instance de base de données actuelle est db.r6gd.4xlarge, choisissez db.r6g.4xlarge pour revenir en arrière. Pour plus d'informations, consulter Modification d'une instance de base de données Amazon RDS.

Surveillance des instances de base de données qui utilisent RDS Optimized Reads

Vous pouvez surveiller les instances de base de données qui utilisent des lectures optimisées RDS à l'aide des CloudWatch métriques suivantes :

  • FreeLocalStorage

  • ReadIOPSLocalStorage

  • ReadLatencyLocalStorage

  • ReadThroughputLocalStorage

  • WriteIOPSLocalStorage

  • WriteLatencyLocalStorage

  • WriteThroughputLocalStorage

Ces métriques fournissent des données sur le stockage disponible dans le stockage d'instances, les IOPS et le débit. Pour plus d'informations sur ces métriques, consultez Mesures au CloudWatch niveau de l'instance Amazon pour Amazon RDS.

Pour surveiller l'utilisation actuelle de votre stockage local, connectez-vous à votre base de données à l'aide de la requête suivante :

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');

Pour plus d'informations sur les fichiers temporaires et leur utilisation, consultez Managing temporary files with PostgreSQL (Gestion des fichiers temporaires avec PostgreSQL).

Limites pour Lectures optimisées pour RDS dans PostgreSQL

La limitation suivante s'applique à la fonctionnalité Lectures optimisées pour RDS dans PostgreSQL :

  • Les transactions peuvent échouer lorsque le stockage d'instances est plein.