View a markdown version of this page

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

Aurora Optimized Reads è disponibile per impostazione predefinita quando si crea un cluster DB che utilizza istanze Graviton-based R6gd, R8gd e Intel-based R6id con storage NVMe (Memory Express) non volatile. È disponibile a partire dalle versioni di PostgreSQL seguenti:

  • 14.12 e versioni successive, 15.7 e versioni successive, 16.3 e versioni successive, 17.4 e versioni successive per istanze R8gd

  • 14.9 e versioni successive, 15.4 e versioni successive, 16.1 e tutte le versioni successive per istanze R6gd e R6id

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

Cache ottimizzata Reads-enabled su più livelli: utilizzando la cache a più livelli, è possibile estendere la capacità di caching delle istanze DB fino a 5 volte 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 r8gd, r6gd e r6id, Aurora riduce shared_buffers lo spazio del 4,5% per ospitare i metadati per la cache delle letture ottimizzate.

Oggetti Reads-enabled temporanei ottimizzati: utilizzando oggetti temporanei, è possibile ottenere un'elaborazione delle query più rapida posizionando i file temporanei generati da PostgreSQL nello storage 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 integrano grandi volumi di dati che non rientrano nella capacità di memoria disponibile su un’istanza database.

In un I/O-Optimized cluster Aurora, Optimized Reads utilizza sia la cache a più livelli che gli oggetti temporanei sullo storage NVMe. Con la funzionalità di cache ottimizzata Reads-enabled su più livelli, Aurora alloca il doppio della memoria di istanza per gli oggetti temporanei, circa il 10% dello storage per le operazioni interne e lo storage rimanente come cache a più livelli. In un cluster Aurora standard, Letture ottimizzate utilizza solo oggetti temporanei.

I/O-Optimized I cluster Aurora consentono di ridimensionare lo spazio allocato per gli oggetti Reads-enabled temporanei ottimizzati utilizzando il parametro aurora_temp_space_size dinamico a livello di istanza. La funzionalità di ridimensionamento è disponibile a partire dalle versioni di PostgreSQL seguenti:

  • 16.8 e tutte le versioni successive

  • 15.12 e versioni successive alla 15

  • 14.17 e versioni successive alla 14

Con questo parametro, è possibile ridimensionare la capacità da 2 volte la memoria dell'istanza fino al 90% della capacità di storage NVMe totale dell'istanza senza richiedere il riavvio del motore di database. Quando si espande lo spazio per gli oggetti temporanei, la modifica diventa immediatamente effettiva, indipendentemente dai carichi di lavoro simultanei. Tuttavia, quando si riduce lo spazio, la modifica viene completata solo se lo spazio inutilizzato per gli oggetti temporanei è sufficiente per soddisfare la nuova richiesta di dimensione. Dopo aver ridimensionato gli oggetti Reads-enabled temporanei ottimizzati, la cache a più livelli si regola automaticamente per utilizzare tutto lo spazio disponibile.

Motore Configurazione dell'archiviazione del cluster Oggetti temporanei ottimizzati Reads-enabled Cache ottimizzata Reads-enabled su più livelli Versioni supportate
Edizione Aurora PostgreSQL-Compatible Standard No
  • 14.9 e versioni successive, 15.4 e versioni successive, 16.1 e tutte le versioni successive per istanze r6gd e r6id

  • 14.12 e versioni successive, 15.7 e versioni successive, 16.3 e versioni successive, 17.4 e versioni successive per istanze r8gd

I/O-Optimized
Nota

Il passaggio IO-Optimized da un cluster a uno standard all'altro su una classe di istanze NVMe-based DB causa un riavvio immediato del motore di database.

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

Per verificare se gli oggetti temporanei sono configurati, utilizzare 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, l'istanza DB utilizza automaticamente Aurora NVMe-based 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 Classi di istanze DB Amazon Aurora.

Per tornare a un’istanza senza la funzionalità Letture ottimizzate per Aurora abilitata, modificare la classe dell’istanza database dell’istanza Aurora con una classe di istanza simile senza l’archiviazione temporanea 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 Reads-enabled ottimizzata su più livelli

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.

  • Real-time dashboard di reporting che eseguono centinaia di interrogazioni mirate a fini di raccolta. metrics/data

  • 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 ottimizzati Reads-enabled

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.

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

  • Operazioni CREATE INDEX o REINDEX per l’ordinamento.

  • Altri carichi di lavoro che utilizzano tabelle temporanee interne.

Monitoraggio delle istanze database che utilizzano Letture ottimizzate per Aurora

È possibile monitorare le query che utilizzano la cache a Reads-enabled più livelli ottimizzata con il comando EXPLAIN, come illustrato 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

I campi aurora_orcache_hit e aurora_storage_read della sezione Buffers del piano di spiegazione vengono visualizzati solo quando la funzionalità Letture ottimizzate è attivata e i valori sono maggiori di zero. Il campo Lettura indica il totale dei campi aurora_orcache_hit e aurora_storage_read.

È 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 Instance-level metriche 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’archivio dell’istanza sta raggiungendo il limite a causa del carico di lavoro sull’istanza database, ottimizzare la concorrenza e le query che utilizzano grandi volumi di oggetti temporanei oppure modificarlo affinché utilizzi una classe di istanza database più grande.

  • Monitora la CloudWatch metrica per la frequenza 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.