Améliorer les performances des requêtes pour Aurora Postgre SQL grâce à Aurora Optimized Reads - Amazon Aurora

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éliorer les performances des requêtes pour Aurora Postgre SQL grâce à Aurora Optimized Reads

Vous pouvez accélérer le traitement des requêtes pour Aurora Postgre SQL grâce à Aurora Optimized Reads. Une instance de SQL base de données Aurora Postgre qui utilise Aurora Optimized Reads permet d'améliorer la latence des requêtes jusqu'à 8 fois et de réaliser des économies de 30 % pour les applications comportant des ensembles de données volumineux, qui dépassent la capacité de mémoire d'une instance de base de données.

Vue d'ensemble des lectures optimisées pour Aurora dans Postgre SQL

Aurora Optimized Reads est disponible par défaut lorsque vous créez un cluster de base de données qui utilise des instances R6gd basées sur Graviton et R6id basées sur Intel avec un stockage non volatile memory express (). NVMe Il est disponible dans les SQL versions de Postgre suivantes :

  • 16.1 et toutes les versions supérieures

  • Version 15.4 et versions ultérieures

  • Version 14.9 et versions ultérieures

Aurora Optimized Reads prend en charge deux fonctionnalités : le cache à plusieurs niveaux et les objets temporaires.

Cache à plusieurs niveaux Optimized Reads : grâce au cache à plusieurs niveaux, vous pouvez étendre la capacité de mise en cache de votre instance de base de données jusqu'à 5 fois la mémoire de l'instance. Cela permet de maintenir le cache à jour automatiquement de manière à ce qu'il contienne les données les plus récentes et les plus homogènes sur le plan transactionnel, et de libérer ainsi les applications de la charge de gestion de la mise à jour des données des solutions de mise en cache externes basées sur des ensembles de résultats. Il réduit jusqu'à 8 fois le temps de latence des requêtes qui récupéraient auparavant des données du stockage Aurora.

Dans Aurora, la valeur du groupe de shared_buffers paramètres par défaut est généralement définie sur environ 75 % de la mémoire disponible. Toutefois, pour les types d'instances r6gd et r6id, Aurora réduira l'shared_buffersespace de 4,5 % pour héberger les métadonnées du cache de lectures optimisées.

Objets temporaires optimisés compatibles avec les lectures : à l'aide d'objets temporaires, vous pouvez accélérer le traitement des requêtes en plaçant les fichiers temporaires générés par Postgre SQL sur le stockage local. NVMe Cela réduit le trafic vers Elastic Block Storage (EBS) sur le réseau. Il offre une latence et un débit jusqu'à deux fois supérieurs pour les requêtes avancées qui trient, joignent ou fusionnent de gros volumes de données qui ne correspondent pas à la capacité de mémoire disponible sur une instance de base de données.

Sur un cluster optimisé pour les E/S Aurora, Optimized Reads utilise à la fois le cache hiérarchisé et les objets temporaires stockés. NVMe Grâce au cache à plusieurs niveaux Optimized Reads, Aurora alloue deux fois la mémoire de l'instance aux objets temporaires, environ 10 % de l'espace de stockage aux opérations internes et le reste du stockage sous forme de cache à plusieurs niveaux. Sur un cluster Aurora standard, Optimized Reads utilise uniquement des objets temporaires.

Engine Configuration du stockage en cluster Objets temporaires Optimized Reads Cache à plusieurs niveaux Optimized Reads Versions prises en charge
Aurora SQL Postgre-Édition compatible Standard Oui Non Aurora Postgre SQL version 16.1 et toutes les versions supérieures, 15.4 et supérieures, version 14.9 et supérieures
Optimisé pour les E/S Oui Oui
Note

Un basculement entre des clusters optimisés pour l'IO et des clusters standard sur une classe d'instance de base de données NVMe basée entraîne le redémarrage immédiat du moteur de base de données.

Dans Aurora PostgreSQL, utilisez le temp_tablespaces paramètre pour configurer l'espace de table dans lequel les objets temporaires sont stockés.

Pour vérifier si les objets temporaires sont configurés, utilisez la commande suivante :

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

aurora_temp_tablespaceIl s'agit d'un tablespace configuré par Aurora qui pointe vers le stockage NVMe local. Vous ne pouvez pas modifier ce paramètre ni revenir au EBS stockage Amazon.

Pour vérifier si le cache Optimized Reads est activé, utilisez la commande suivante :

postgres=> show shared_preload_libraries; shared_preload_libraries -------------------------------------------------------- rdsutils,pg_stat_statements,aurora_optimized_reads_cache

Utilisation d'Aurora Optimized Reads

Lorsque vous provisionnez une instance de SQL base de données Aurora Postgre avec l'une des instances de NVMe base de données, l'instance de base de données utilise automatiquement les lectures optimisées Aurora.

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

Aurora Optimized Reads est disponible dans tous Régions AWS où une ou plusieurs classes d'instances de base de données avec NVMe SSD stockage local sont prises en charge. Pour de plus amples informations, veuillez consulter Classes d'instances de base de données Amazon Aurora.

Pour revenir à une instance Aurora en lecture non optimisée, modifiez la classe d'instance de base de données de votre instance Aurora en une classe d'instance similaire sans stockage NVMe éphémère pour les charges de travail de votre 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, consultez Modification d'une instance de base de données Amazon RDS.

Cas d'utilisation d'Aurora Optimized Reads

Cache à plusieurs niveaux Optimized Reads

Voici quelques cas d'utilisation du cache à plusieurs niveaux Optimized Reads :

  • Applications à l'échelle d'Internet telles que le traitement des paiements, la facturation, le commerce électronique avec des performances strictesSLAs.

  • Tableaux de bord de reporting en temps réel qui exécutent des centaines de requêtes ponctuelles pour la collecte de métriques/données.

  • Applications d'IA générative avec l'extension pgvector pour rechercher des voisins exacts ou les voisins les plus proches parmi des millions de vecteurs intégrés.

Objets temporaires Optimized Reads

Voici quelques cas d'utilisation des objets temporaires Optimized Reads :

  • Requêtes analytiques qui incluent des expressions de table communes (CTEs), des tables dérivées et des opérations de regroupement.

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

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

  • CREATE INDEXou REINDEX des opérations de tri.

  • Autres charges de travail utilisant des tables temporaires internes.

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

Vous pouvez surveiller vos requêtes qui utilisent le cache hiérarchisé optimisé pour les lectures à l'aide de la EXPLAIN commande, comme illustré dans l'exemple suivant :

Postgres=> EXPLAIN (ANALYZE, BUFFERS) SELECT c FROM sbtest15 WHERE id=100000000 QUERY PLAN -------------------------------------------------------------------------------------- Index Scan using sbtest15_pkey on sbtest15 (cost=0.57..8.59 rows=1 width=121) (actual time=0.287..0.288 rows=1 loops=1) Index Cond: (id = 100000000) Buffers: shared hit=3 read=2 aurora_orcache_hit=2 I/O Timings: shared/local read=0.264 Planning: Buffers: shared hit=33 read=6 aurora_orcache_hit=6 I/O Timings: shared/local read=0.607 Planning Time: 0.929 ms Execution Time: 0.303 ms (9 rows) Time: 2.028 ms
Note

aurora_orcache_hitet aurora_storage_read les champs de la Buffers section du plan d'explication ne sont affichés que lorsque les lectures optimisées sont activées et que leurs valeurs sont supérieures à zéro. Le champ de lecture est le total des aurora_storage_read champs aurora_orcache_hit et.

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

  • AuroraOptimizedReadsCacheHitRatio

  • FreeEphemeralStorage

  • ReadIOPSEphemeralStorage

  • ReadLatencyEphemeralStorage

  • ReadThroughputEphemeralStorage

  • WriteIOPSEphemeralStorage

  • WriteLatencyEphemeralStorage

  • WriteThroughputEphemeralStorage

Ces métriques fournissent des données sur le stockage d'instanceIOPS, le stockage et le débit disponibles. Pour plus d’informations sur ces métriques, consultez Métriques de niveau instance pour Amazon Aurora.

Vous pouvez également utiliser l'pg_proctabextension pour surveiller le NVMe stockage.

postgres=>select * from pg_diskusage(); major | minor | devname | reads_completed | reads_merged | sectors_read | readtime | writes_completed | writes_merged | sectors_written | writetime | current_io | iotime | totaliotime ------+-------+---------------------+-----------------+--------------+--------------+----------+------------------+---------------+-----------------+-----------+------------+---------+------------- | | rdstemp | 23264 | 0 | 191450 | 11670 | 1750892 | 0 | 24540576 | 819350 | 0 | 3847580 | 831020 | | rdsephemeralstorage | 23271 | 0 | 193098 | 2620 | 114961 | 0 | 13845120 | 130770 | 0 | 215010 | 133410 (2 rows)

Bonnes pratiques pour Aurora Optimized Reads

Utilisez les bonnes pratiques suivantes pour Aurora Optimized Reads :

  • Surveillez l'espace de stockage disponible sur le magasin d'instances à l'aide de la CloudWatch métriqueFreeEphemeralStorage. Si le magasin d'instance atteint sa limite en raison de la charge de travail de l'instance de base de données, ajustez la simultanéité et les requêtes qui utilisent beaucoup d'objets temporaires ou modifiez-le pour utiliser une classe d'instance de base de données plus importante.

  • Surveillez la CloudWatch métrique du taux de réussite du cache Optimized Reads. Des opérations telles que VACUUM la modification d'un grand nombre de blocs très rapidement. Cela peut entraîner une baisse temporaire du taux d'accès. L'extension pg_prewarm peut être utilisée pour charger des données dans le cache de tampon, ce qui permet à Aurora d'écrire de manière proactive certains de ces blocs dans le cache Optimized Reads.

  • Vous pouvez activer la gestion du cache du cluster (CCM) pour réchauffer le cache tampon et le cache hiérarchisé sur un lecteur de niveau 0, qui sera utilisé comme cible de basculement. Lorsque cette option CCM est activée, le cache tampon est périodiquement scanné pour écrire les pages susceptibles d'être expulsées dans le cache hiérarchisé. Pour plus d'informations surCCM, voirRécupération rapide après basculement avec la gestion des caches de clusters pour Aurora PostgreSQL.