Prestazioni delle query migliorate per Aurora PostgreSQL con Letture ottimizzate per Aurora - Amazon Aurora

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Prestazioni delle query migliorate per Aurora PostgreSQL con Letture ottimizzate per Aurora

Con Letture ottimizzate per Aurora è possibile velocizzare l'elaborazione delle query per Aurora PostgreSQL. Un'istanza database Aurora PostgreSQL che utilizza Letture ottimizzate per Aurora offre una latenza delle query fino a 8 volte migliorata e risparmi sui costi fino al 30% per applicazioni con set di dati di grandi dimensioni, che superano la capacità di memoria di un'istanza database.

Panoramica di Letture ottimizzate per Aurora in PostgreSQL

Letture ottimizzate per Aurora è disponibile per impostazione predefinita quando si crea un cluster di database che utilizza istanze R6gd basate su Graviton e R6id basate su Intel con archiviazione Non-Volatile Memory Express (NVMe). È disponibile a partire dalle versioni di PostgreSQL seguenti:

  • 16.1 e tutte le versioni successive

  • 15.4 e versioni successive

  • 14.9 e versioni successive

Letture ottimizzate per Aurora supporta due funzionalità: cache a più livelli e oggetti temporanei.

Cache a più livelli abilitata per Letture ottimizzate: con una cache a più livelli puoi ottenere una capacità di caching dell'istanza database fino a 5 volte superiore la memoria dell'istanza. Ciò assicura che la cache contenga automaticamente i dati più recenti e coerenti dal punto di vista transazionale, sollevando le applicazioni dall'onere di gestire la valuta dei dati delle soluzioni di caching basate su set di risultati esterni. Offre una latenza fino a 8 volte migliore per le query che in precedenza recuperavano dati dall'archiviazione di Aurora.

In Aurora, il valore per shared_buffers nel gruppo di parametri predefinito è in genere impostato su circa il 75% della memoria disponibile. Tuttavia, per i tipi di istanza r6gd e r6id, Aurora ridurrà shared_buffers lo spazio del 4,5% per ospitare i metadati per la cache delle letture ottimizzate.

Oggetti temporanei abilitati per Letture ottimizzate: con oggetti temporanei, puoi velocizzare l'elaborazione delle query posizionando i file temporanei generati da PostgreSQL nell'archiviazione NVMe locale. Ciò riduce il traffico verso Elastic Block Storage (EBS) attraverso la rete. Offre una latenza e un throughput fino a 2 volte migliori per le query avanzate che ordinano, uniscono o uniscono grandi volumi di dati che non rientrano nella capacità di memoria disponibile su un'istanza DB.

In un cluster ottimizzato per Aurora I/O, Letture ottimizzate utilizza sia la cache a più livelli sia gli oggetti temporanei nell'archiviazione NVMe. Con la funzionalità di cache a più livelli abilitata per Letture ottimizzate, Aurora alloca il doppio della memoria dell'istanza per gli oggetti temporanei, circa il 10% dell'archiviazione per le operazioni interne e l'archiviazione rimanente come cache a più livelli. In un cluster Aurora standard, Letture ottimizzate utilizza solo oggetti temporanei.

Motore Configurazione dell'archiviazione del cluster Oggetti temporanei abilitati per Letture ottimizzate Cache a più livelli abilitata per Letture ottimizzate Versioni supportate
Amazon Aurora edizione compatibile con PostgreSQL Standard No Aurora PostgreSQL versione 16.1 e tutte le versioni successive, 15.4 e successive, versione 14.9 e successive
Ottimizzato per I/O
Nota

Il passaggio da cluster ottimizzati per IO a standard su una classe di istanze database basata su NVMe causa un riavvio immediato del motore di database.

In Aurora PostgreSQL, usa il temp_tablespaces parametro per configurare lo spazio della tabella in cui vengono archiviati gli oggetti temporanei.

Per verificare se gli oggetti temporanei sono configurati, usa il seguente comando:

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

aurora_temp_tablespace è una tablespace configurata da Aurora che punta all'archiviazione NVMe locale. Non puoi modificare questo parametro o tornare all'archiviazione Amazon EBS.

Per verificare se la cache per le letture ottimizzate è attiva, usa il seguente comando:

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

Utilizzo di Letture ottimizzate per Aurora

Quando si esegue il provisioning di un'istanza DB Aurora PostgreSQL con una delle istanze DB basate su NVMe, l'istanza DB utilizza automaticamente Aurora Optimized Reads.

Per attivare Letture ottimizzate per Aurora, procedi in uno dei seguenti modi:

Aurora Optimized Reads è disponibile Regioni AWS ovunque siano supportate una o più classi di istanze DB con storage SSD NVMe locale. Per ulteriori informazioni, consulta Aurora Classi di istanze database.

Per tornare a un'istanza Aurora di lettura non ottimizzata, modifica la classe di istanza DB dell'istanza Aurora in una classe di istanza simile senza storage temporaneo NVMe per i carichi di lavoro del database. Ad esempio, se la classe di istanza database corrente è db.r6gd.4xlarge, scegli db.r6g.4xlarge per tornare indietro. Per ulteriori informazioni, consulta la pagina relativa alla modifica di un'istanza database Aurora.

Casi d'uso per letture ottimizzate per Aurora

Cache a più livelli abilitata per Letture ottimizzate

Di seguito sono riportati alcuni casi d'uso in cui è possibile trarre vantaggio dalla funzionalità Letture ottimizzate con cache a più livelli:

  • Applicazioni Internet su scala, come elaborazione dei pagamenti, fatturazione, e-commerce con SLA prestazionali rigorosi.

  • Dashboard per le segnalazioni in tempo reale che eseguono centinaia di point query per la raccolta di metriche e dati.

  • Applicazioni di intelligenza artificiale generativa con l'estensione pgvector per la ricerca di vicini esatti o più prossimi tra milioni di incorporamenti vettoriali.

Oggetti temporanei abilitati per Letture ottimizzate

Di seguito sono riportati alcuni casi d'uso in cui è possibile trarre vantaggio dalla funzionalità Letture ottimizzate con oggetti temporanei:

  • Query analitiche con espressioni di tabella comuni (CTE), tabelle derivate e operazioni di raggruppamento.

  • Repliche di lettura che gestiscono le query non ottimizzate per un'applicazione.

  • Query di reporting on demand o dinamiche con operazioni complesse come GROUP BY e ORDER BY che non sempre possono utilizzare indici appropriati.

  • CREATE INDEXREINDEXo operazioni di ordinamento.

  • Altri carichi di lavoro che utilizzano tabelle temporanee interne.

Monitoraggio delle istanze database che utilizzano Letture ottimizzate per Aurora

Per monitorare le query che utilizzano la cache a più livelli abilitata per Letture ottimizzate utilizza il comando EXPLAIN, come mostrato nell'esempio seguente:

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
Nota

aurora_orcache_hite aurora_storage_read i campi nella Buffers sezione del piano di spiegazione vengono visualizzati solo quando è attivata l'opzione Lettura ottimizzata e i relativi valori sono maggiori di zero. Il campo di lettura è il totale dei aurora_storage_read campi aurora_orcache_hit e.

È possibile monitorare le istanze DB che utilizzano Aurora Optimized Reads utilizzando le seguenti metriche: CloudWatch

  • AuroraOptimizedReadsCacheHitRatio

  • FreeEphemeralStorage

  • ReadIOPSEphemeralStorage

  • ReadLatencyEphemeralStorage

  • ReadThroughputEphemeralStorage

  • WriteIOPSEphemeralStorage

  • WriteLatencyEphemeralStorage

  • WriteThroughputEphemeralStorage

Queste metriche forniscono dati sullo spazio di archiviazione dell'archivio dell'istanza, sulle operazioni IOPS e sulla velocità di trasmissione effettiva disponibili. Per ulteriori informazioni su questi parametri, consulta Parametri a livello di istanza per Amazon Aurora.

È anche possibile utilizzare l'estensione pg_proctab per monitorare l'archiviazione NVMe.

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)

Best practice per Letture ottimizzate per Aurora

Usa le seguenti best practice per Letture ottimizzate per Aurora:

  • Monitora lo spazio di archiviazione disponibile sull'instance store con la metrica. CloudWatch FreeEphemeralStorage Se l'instance store sta raggiungendo il limite a causa del carico di lavoro sull'istanza DB, ottimizza la concorrenza e le query che utilizzano pesantemente oggetti temporanei o modificalo per utilizzare una classe di istanze DB più grande.

  • Monitora la CloudWatch metrica per il tasso di accesso alla cache di Optimized Reads. Operazioni come VACUUM permettono di modificare blocchi numerosi molto rapidamente. Ciò può causare un calo temporaneo della percentuale di riscontri. Utilizza l'estensione pg_prewarm per caricare dati nella cache del buffer che consente ad Aurora di scrivere in modo proattivo alcuni di questi blocchi nella cache delle Letture ottimizzate.

  • È possibile abilitare Gestione della cache del cluster (CCM) per preparare la cache del buffer e la cache a più livelli su un lettore di livello 0, che verrà utilizzato come destinazione di failover. Quando la funzionalità CCM è abilitata, la cache del buffer viene scansionata periodicamente per scrivere pagine idonee all'espulsione nella cache a più livelli. Per ulteriori informazioni sulla CCM, consulta Ripristino rapido dopo il failover con Cluster Cache Management per Aurora PostgreSQL.