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à.
Miglioramento delle prestazioni delle query per Aurora Postgre SQL con Aurora Optimized Reads
È possibile ottenere un'elaborazione delle query più rapida per Aurora Postgre SQL con Aurora Optimized Reads. Un'istanza Aurora Postgre SQL DB che utilizza Aurora Optimized Reads 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 DB.
Argomenti
Panoramica delle letture ottimizzate di Aurora in Postgre SQL
Aurora Optimized Reads è disponibile per impostazione predefinita quando si crea un cluster DB che utilizza istanze R6gd basate su Graviton e R6id basate su Intel con storage express () in memoria non volatile. NVMe È disponibile nelle seguenti versioni di Postgre: SQL
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 ottimizzati abilitati alla lettura: utilizzando oggetti temporanei, è possibile ottenere un'elaborazione delle query più rapida inserendo i file temporanei generati da Postgre nella memoria locale. SQL NVMe Ciò riduce il traffico verso Elastic Block Storage (EBS) sulla 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 Aurora I/O ottimizzato, Optimized Reads utilizza sia la cache a più livelli che gli oggetti temporanei sullo storage. 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 |
---|---|---|---|---|
Aurora SQL Postgre - Edizione compatibile | Standard | Sì | No | Aurora Postgre SQL versione 16.1 e tutte le versioni successive, 15.4 e successive, versione 14.9 e successive |
Ottimizzato per I/O | Sì | Sì |
Nota
Il passaggio tra cluster ottimizzati per IO e standard su una classe di istanze DB NVMe basata comporta un riavvio immediato del motore di database.
In Aurora PostgreSQL, utilizzate 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, utilizzate il seguente comando:
postgres=> show temp_tablespaces;
temp_tablespaces --------------------- aurora_temp_tablespace (1 row)
aurora_temp_tablespace
È un tablespace configurato da Aurora che punta all'archiviazione locale. NVMe Non puoi modificare questo parametro o tornare allo EBS storage Amazon.
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 Postgre con una delle istanze SQL DB NVMe basate, l'istanza DB utilizza automaticamente Aurora Optimized Reads.
Per attivare Letture ottimizzate per Aurora, procedi in uno dei seguenti modi:
-
Crea un cluster Aurora Postgre SQL DB utilizzando una delle classi di istanze DB NVMe basate. Per ulteriori informazioni, consulta Creazione di un cluster database Amazon Aurora.
-
Modifica un cluster Aurora Postgre SQL DB esistente per utilizzare una delle classi di istanze DB NVMe basate. Per ulteriori informazioni, consulta Modifica di un cluster database Amazon Aurora.
Aurora Optimized Reads è disponibile in tutti Regioni AWS dove sono supportate una o più classi di istanze DB con NVMe SSD archiviazione locale. Per ulteriori informazioni, consulta Classi di istanze DB Amazon Aurora.
Per tornare a un'istanza Aurora di lettura non ottimizzata, modifica la classe di istanza DB dell'istanza Aurora con la classe di istanza simile senza spazio di archiviazione NVMe effimero 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 su scala Internet come elaborazione dei pagamenti, fatturazione, e-commerce con prestazioni rigorose. SLAs
-
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 che includono Common Table Expressions (CTEs), tabelle derivate e operazioni di raggruppamento.
-
Repliche di lettura che gestiscono le query non ottimizzate per un'applicazione.
-
Query di reporting su richiesta o dinamiche con operazioni complesse come GROUP BY e ORDER BY che non sempre possono utilizzare indici appropriati.
-
CREATE INDEX
oREINDEX
operazioni di 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 più livelli abilitata alla lettura ottimizzata con il EXPLAIN comando, 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
aurora_orcache_hit
e aurora_storage_read
i campi nella Buffers
sezione del piano di spiegazione vengono visualizzati solo quando Optimized Reads è attivata 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 storage e sul throughput disponibili nell'Instance Store. IOPS Per ulteriori informazioni su questi parametri, consulta Parametri a livello di istanza per Amazon Aurora.
Puoi anche utilizzare l'pg_proctab
estensione per monitorare NVMe lo storage.
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 CloudWatch metrica
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 modificare un gran numero di blocchi 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 la gestione della cache del cluster (CCM) per riscaldare la cache buffer e la cache a più livelli su un lettore di livello 0, che verrà utilizzato come destinazione di failover. Quando CCM è abilitata, la cache buffer viene sottoposta a scansione periodica per scrivere pagine idonee all'eliminazione nella cache a più livelli. Per ulteriori informazioni su, vedere. CCM Ripristino rapido dopo il failover con Cluster Cache Management per Aurora PostgreSQL