Prestazioni delle query migliorate per RDS per MySQL con Amazon RDS Optimized Reads - Amazon Relational Database Service

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 RDS per MySQL con Amazon RDS Optimized Reads

Puoi ottenere un'elaborazione delle query più rapida per RDS per MySQL con Amazon RDS Optimized Reads. Un'istanza database RDS per MySQL o un cluster database multi-AZ che utilizza la funzionalità Letture ottimizzate per Amazon RDS può ottenere un'elaborazione delle query fino a due volte più veloce rispetto a un'istanza o un cluster database che non lo utilizza.

Panoramica di RDS Optimized Reads

Quando si utilizza un'istanza database RDS per MySQL o un cluster database multi-AZ con la funzionalità Letture ottimizzate per Amazon RDS attivata, si otterranno prestazioni di query più rapide tramite l'uso di un archivio dell'istanza. Un archivio istanze fornisce uno storage temporaneo di livello per l'istanza database o il cluster database multi-AZ. L'archiviazione è basata su unità di memoria a stato solido (SSD) NVMe (Non-Volatile Memory Express) fisicamente collegata al server host. Questa archiviazione è ottimizzata per bassa latenza, prestazioni I/O casuali elevate e velocità di trasmissione effettiva di lettura sequenziale elevata.

La funzionalità Letture ottimizzate per Amazon RDS è attivata per impostazione predefinita quando un'istanza database o un cluster database multi-AZ utilizza una classe di istanza database con un archivio dell'istanza, ad esempio db.m5d o db.m6gd. Con RDS Optimized Reads, alcuni oggetti temporanei vengono archiviati nell'archivio dell'istanza. Questi oggetti temporanei includono file temporanei interni, tabelle temporanee interne su disco, file di mappe in memoria e file di cache di log binario (binlog). Per ulteriori informazioni sull'archivio dell'istanza, consulta Instance store Amazon EC2 nella Guida per l'utente di Amazon Elastic Compute Cloud per istanze Linux.

I carichi di lavoro che generano gli oggetti temporanei in MySQL per l'elaborazione delle query possono sfruttare l'archivio dell'istanza per elaborare più rapidamente le query. Questo tipo di carico di lavoro include query che coinvolgono ordinamenti, aggregazioni di hash, join a carico elevato, espressioni di tabella comuni (CTE) e query su colonne non indicizzate. Questi volumi dell'archivio dell'istanza forniscono operazioni IOPS e prestazioni più elevate, indipendentemente dalle configurazioni utilizzate per l'archivio persistente di Amazon EBS. Poiché RDS Optimized Reads trasferisce le operazioni sugli oggetti temporanei all'archivio dell'istanza, le operazioni di input/output al secondo (IOPS) o la velocità di trasmissione effettiva dell'archivio persistente (Amazon EBS) possono ora essere utilizzate per le operazioni su oggetti persistenti. Queste includono le normali operazioni di lettura e scrittura dei file di dati e le operazioni del motore in background, come lo svuotamento e l'unione di inserimenti di buffer.

Nota

Gli snapshot RDS manuali e automatici contengono solo i file del motore per gli oggetti persistenti. Gli oggetti temporanei creati nell'archivio dell'istanza non sono inclusi negli snapshot RDS.

Casi d'uso per RDS Optimized Reads

Se hai carichi di lavoro che si basano pesantemente sugli oggetti temporanei, come tabelle o file interni, per l'esecuzione delle query, puoi trarre vantaggio dall'attivazione di RDS Optimized Reads. I seguenti casi d'uso sono candidati per RDS Optimized Reads:

  • Applicazioni che eseguono query analitiche con espressioni di tabella comuni (CTE) complesse, tabelle derivate e operazioni di raggruppamento

  • Repliche di lettura che generano un intenso traffico di lettura con query non ottimizzate

  • Applicazioni che eseguono query di report on demand o dinamiche che includono operazioni complesse, ad esempio query con le clausole GROUP BY e ORDER BY

  • Carichi di lavoro che utilizzano tabelle temporanee interne per l'elaborazione delle query

    È possibile monitorare la variabile di stato del motore created_tmp_disk_tables per determinare il numero di tabelle temporanee basate su disco create nell'istanza database.

  • Applicazioni che creano tabelle temporanee di grandi dimensioni, direttamente o tramite procedure, per archiviare risultati intermedi

  • Query di database che eseguono il raggruppamento o l'ordinamento di colonne non indicizzate

Best practice per RDS Optimized Reads

Usa le seguenti best practice per RDS Optimized Reads:

  • Aggiungi la logica dei tentativi per le query di sola lettura, nel caso in cui non riescano perché l'archivio dell'istanza è completo durante l'esecuzione.

  • Monitora lo spazio di archiviazione disponibile nell'archivio dell'istanza con la metrica CloudWatch FreeLocalStorage. Se l'archivio dell'istanza sta raggiungendo il limite a causa del carico di lavoro dell'istanza database, modifica l'istanza database in modo da utilizzare una classe di istanza database più grande.

  • Se l'istanza database o il cluster database multi-AZ ha memoria sufficiente ma raggiunge comunque il limite di archiviazione dell'archivio dell'istanza, aumentare il valore binlog_cache_size per mantenere in memoria le voci binlog specifiche della sessione. Questa configurazione impedisce di scrivere le voci binlog in file di cache binlog temporanei memorizzati su disco.

    Il parametro binlog_cache_size è specifico della sessione. É possibile modificare il valore per ogni nuova sessione. L'impostazione di questo parametro può aumentare l'utilizzo della memoria dell'istanza database durante i picchi di carico di lavoro. Pertanto, è consigliabile aumentare il valore del parametro in base al modello di carico di lavoro dell'applicazione e alla memoria disponibile nell'istanza database.

  • Usa il valore predefinito MIXED per binlog_format. A seconda della dimensione delle transazioni, l'impostazione binlog_format su ROW può comportare la creazione di file di cache binlog di grandi dimensioni nell'archivio dell'istanza.

  • Imposta il parametro internal_tmp_mem_storage_engine su TempTable e il parametro temptable_max_mmap in modo che corrisponda alla dimensione dello spazio di archiviazione disponibile nell'archivio dell'istanza.

  • Evita di apportare modifiche in blocco in una singola transazione. Questi tipi di transazioni possono generare file di cache binlog di grandi dimensioni nell'archivio dell'istanza e possono causare problemi quando l'archivio dell'istanza è pieno. Prendi in considerazione la suddivisione delle scritture in transazioni più piccole per ridurre al minimo l'uso dello spazio di archiviazione per i file di cache binlog.

  • Usa il valore predefinito ABORT_SERVER per il parametro binlog_error_action. In questo modo si evitano problemi con i log binari sulle istanze database con i backup abilitati.

Utilizzo di RDS Optimized Reads

L'istanza database utilizza automaticamente la funzionalità Letture ottimizzate per Amazon RDS quando si effettua il provisioning di un'istanza database RDS per MySQL con una delle seguente classi di istanza database in un'implementazione di istanza database single-AZ o multi-AZ oppure in un'implementazione di cluster database multi-AZ:

Per attivare RDS Optimized Reads, procedi in uno dei seguenti modi:

  • Creare un'istanza database o un cluster database multi-AZ RDS per MySQL utilizzando una di queste classi di istanza database. Per ulteriori informazioni, consulta Creazione di un'istanza database Amazon RDS.

  • Modificare un'istanza database o un cluster database multi-AZ RDS per MySQL esistente per utilizzare una di queste classi di istanza database. Per ulteriori informazioni, consulta Modifica di un'istanza database Amazon RDS.

La funzionalità Letture ottimizzate per Amazon RDS è disponibile in tutte le Regioni AWS RDS in cui sono supportate una o più delle classi di istanza database con spazio di archiviazione SSD NVMe locale. Per informazioni sulle classi di istanza database, consulta Classi di istanze database.

La disponibilità della classe di istanze DB è diversa nelle varie Regioni AWS. Per determinare se una classe di istanza DB è supportata in una Regione AWS specifica, consulta Determinazione del supporto della classe di istanze DB in Regioni AWS.

Se non si desidera utilizzare la funzionalità Letture ottimizzate per Amazon RDS, modificare l'istanza database o il cluster database multi-AZ in modo che non utilizzi una classe di istanza database che supporti la funzionalità.

Monitoraggio delle istanze database che utilizzano RDS Optimized Reads

Puoi monitorare le istanze database che utilizzano RDS Optimized Reads con le seguenti metriche di CloudWatch:

  • FreeLocalStorage

  • ReadIOPSLocalStorage

  • ReadLatencyLocalStorage

  • ReadThroughputLocalStorage

  • WriteIOPSLocalStorage

  • WriteLatencyLocalStorage

  • WriteThroughputLocalStorage

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 CloudWatch livello di istanza Amazon per Amazon RDS.

Limitazioni per RDS Optimized Reads

Le seguenti limitazioni si applicano a RDS Optimized Reads:

  • RDS Optimized Reads è supportato per RDS per MySQL versione 8.0.28 e successive. Per ulteriori informazioni sulle versioni di RDS per MySQL, consulta Versioni di MySQL in Amazon RDS.

  • Non è possibile modificare la posizione degli oggetti temporanei nell'archivio persistente (Amazon EBS) nelle classi di istanza database che supportano RDS Optimized Reads.

  • Quando i log binari sono abilitati su un'istanza database, la dimensione massima della transazione è limitata alla dimensione dell'archivio dell'istanza. In MySQL, qualsiasi sessione che richiede più spazio di archiviazione rispetto al valore binlog_cache_size scrive le modifiche della transazione nei file di cache binlog temporanei, che vengono creati nell'archivio dell'istanza.

  • Le transazioni possono non riuscire quando l'archivio dell'istanza è pieno.