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à.
Fattori prestazionali delle query per Amazon Redshift
Vari fattori possono avere delle ripercussioni sulle prestazioni delle query. I seguenti aspetti delle operazioni su dati, cluster e database influiscono tutti sulla velocità di elaborazione delle query:
-
-
Chiavi di ordinamento(Consulente Amazon Redshift)
-
Compressione dei dati(automatizzato)
-
Distribuzione dei dati(automatizzato)
-
Manutenzione delle tabelle(automatizzato)
-
-
-
Gestione dei carichi di lavoro(automatizzato)
-
Accelerazione di query brevi(automatizzato)
Proprietà tabella
Le tabelle Amazon Redshift sono le unità fondamentali per l'archiviazione dei dati in Amazon Redshift e ogni tabella ha un insieme di proprietà che ne determinano il comportamento e l'accessibilità. Queste proprietà includono l'ordinamento, lo stile di distribuzione, la codifica di compressione e molte altre. La comprensione di queste proprietà è fondamentale per ottimizzare le prestazioni, la sicurezza e l'economicità delle tabelle Amazon Redshift.
Chiavi di ordinamento
Amazon Redshift archivia i dati su disco in ordine ordinato in base alle chiavi di ordinamento di una tabella. L'ottimizzatore di query e il processore di query utilizzano le informazioni sulla posizione dei dati all'interno di un nodo di calcolo per ridurre il numero di blocchi da scansionare. Ciò migliora notevolmente la velocità delle query riducendo la quantità di dati da elaborare. Si consiglia di utilizzare i tasti di ordinamento per facilitare i filtri nella WHERE
clausola. Per ulteriori informazioni, consulta Working with sort keys nella documentazione di Amazon Redshift.
Compressione dei dati
La compressione dei dati riduce i requisiti di storage, riducendo l'I/O del disco e migliorando le prestazioni delle query. Quando si esegue una query, i dati compressi vengono letti in memoria e quindi decompressi durante l'esecuzione della query. Caricando meno dati in memoria, Amazon Redshift può allocare più memoria per l'analisi dei dati. Poiché lo storage a colonne archivia dati simili in sequenza, Amazon Redshift può applicare codifiche di compressione adattive specificamente legate ai tipi di dati a colonne. Il modo migliore per abilitare la compressione dei dati sulle colonne della tabella consiste nell'utilizzare l'AUTO
opzione di Amazon Redshift per applicare codifiche di compressione ottimali quando carichi la tabella con i dati. Per ulteriori informazioni sull'utilizzo della compressione automatica dei dati, consulta Caricamento di tabelle con compressione automatica nella documentazione di Amazon Redshift.
Distribuzione dei dati
Amazon Redshift archivia i dati sui nodi di calcolo in base allo stile di distribuzione di una tabella. Quando si esegue una query, l'ottimizzatore di query ridistribuisce i dati ai nodi di calcolo per eseguire qualsiasi combinazione e aggregazione, in base alle necessità. La scelta del corretto stile di distribuzione per una tabella, aiuta a minimizzare l'impatto della fasi di ridistribuzione posizionando i dati dove servono prima dell'esecuzione delle combinazioni. Ti consigliamo di utilizzare le chiavi di distribuzione per facilitare i join più comuni. Per ulteriori informazioni, consulta Lavorare con gli stili di distribuzione dei dati nella documentazione di Amazon Redshift.
Manutenzione delle tabelle
Sebbene Amazon Redshift offra prestazioni leader del settore pronte all'uso per la maggior parte dei carichi di lavoro, il corretto funzionamento dei cluster Amazon Redshift richiede manutenzione. L'aggiornamento e l'eliminazione dei dati creano righe morte che devono essere cancellate e, se l'ordine di aggiunta non è coerente con la chiave di ordinamento, è necessario ripristinare anche le tabelle di sola aggiunta.
Vacuum
Il processo di vacuuming in Amazon Redshift è essenziale per l'integrità e la manutenzione del cluster Amazon Redshift. Influisce anche sulle prestazioni delle query. Poiché le operazioni di eliminazione e aggiornamento contrassegnano i vecchi dati ma non li rimuovono effettivamente, è necessario utilizzare la funzione vacuuming per recuperare lo spazio su disco occupato dalle righe della tabella contrassegnate per l'eliminazione dalle operazioni e precedenti. UPDATE
DELETE
Amazon Redshift può ordinare ed eseguire automaticamente un'VACUUM DELETE
operazione sulle tabelle in background.
Per ripulire le tabelle dopo un caricamento o una serie di aggiornamenti incrementali, è anche possibile eseguire il comando VACUUM
, sia sull'intero database, sia su singole tabelle. Se le tabelle hanno chiavi di ordinamento e il loro caricamento non è ottimizzato per l'ordinamento durante l'inserimento, è necessario utilizzare gli aspirapolvere per riordinare i dati (il che può essere fondamentale per le prestazioni). Per ulteriori informazioni, consulta le tabelle di Vacuuming nella documentazione di Amazon Redshift.
Analizzare
L'ANALYZE
operazione aggiorna i metadati statistici sulle tabelle in un database Amazon Redshift. Mantenere aggiornate le statistiche migliora le prestazioni delle query perché consente al pianificatore di query di scegliere i piani ottimali. Amazon Redshift monitora ininterrottamente il database ed esegue automaticamente le operazioni di analisi in background. Per ridurre al minimo l'impatto sulle prestazioni del sistema, l'ANALYZE
operazione viene eseguita automaticamente nei periodi in cui i carichi di lavoro sono leggeri. Se scegli di eseguirla in modo esplicitoANALYZE
, procedi come segue:
-
Esegui il
ANALYZE
comando prima di eseguire le query. -
Esegui regolarmente il
ANALYZE
comando sul database al termine di ogni normale ciclo di caricamento o aggiornamento. -
Esegui il
ANALYZE
comando sulle nuove tabelle che crei e sulle tabelle o colonne esistenti che subiscono modifiche significative. -
Valuta la possibilità di eseguire
ANALYZE
operazioni su pianificazioni diverse per diversi tipi di tabelle e colonne, a seconda del loro utilizzo nelle query e della loro propensione al cambiamento. -
Per risparmiare tempo e risorse del cluster, utilizza la
PREDICATE COLUMNS
clausola quando esegui il comando.ANALYZE
Configurazione del cluster
Un cluster è una raccolta di nodi che eseguono l'effettiva memorizzazione ed elaborazione dei dati. Configurare il cluster Amazon Redshift nel modo giusto è fondamentale se desideri ottenere quanto segue:
-
Scalabilità e concorrenza elevate
-
Uso efficiente di Amazon Redshift
-
Prestazioni migliori
-
Costo inferiore
Tipo di nodo
Un cluster Amazon Redshift può utilizzare uno dei diversi tipi di nodi (RA3 DC2, e DS2). Ogni nodo presenta differenti dimensioni e limiti, per aiutarti a scalare il cluster in maniera appropriata. La dimensione del nodo determina la capacità di storage, la memoria, la CPU e il prezzo di ogni nodo nel cluster. L'ottimizzazione dei costi e delle prestazioni inizia con la scelta del tipo e della dimensione di nodo corretti. Per ulteriori informazioni sui tipi di nodi, consulta Panoramica dei cluster Amazon Redshift nella documentazione di Amazon Redshift.
Dimensione del nodo, numero di nodi e slice
Ogni nodo di calcolo è partizionato in sezioni. Più nodi significano più processori e slice, il che consente un'elaborazione più rapida delle query eseguendo porzioni della query contemporaneamente su tutte le slice. Tuttavia, un numero maggiore di nodi comporta anche maggiori spese. Ciò significa che è necessario trovare l'equilibrio tra costi e prestazioni appropriato per il sistema in uso. Per ulteriori informazioni sull'architettura del cluster Amazon Redshift, consulta Architettura del sistema di data warehouse nella documentazione di Amazon Redshift.
Gestione dei carichi di lavoro
La gestione del carico di lavoro di Amazon Redshift (WLM) consente agli utenti di gestire in modo flessibile le code di carichi di lavoro con priorità, in modo che le query brevi e a esecuzione rapida non rimangano bloccate in code a causa di query di lunga durata. Automatic WLM utilizza algoritmi di machine learning (ML) per profilare le query e inserirle nella coda appropriata con le risorse appropriate, gestendo al contempo la concorrenza delle query e l'allocazione della memoria. Per ulteriori informazioni su WLM, consulta Implementazione della gestione del carico di lavoro nella documentazione di Amazon Redshift.
Accelerazione di query brevi
La Short Query Acceleration (SQA) dà la priorità alle query di breve durata rispetto a quelle di lunga durata. SQA esegue le query in uno spazio dedicato in modo che le query SQA non siano costrette ad attendere in coda per le query più lunghe. SQA assegna la priorità solo alle query che hanno un'esecuzione breve e si trovano in una coda definita dall'utente. Se utilizzi SQA, le query a esecuzione breve iniziano a essere eseguite più rapidamente e puoi vedere i risultati prima. Se abiliti SQA, puoi ridurre o eliminare le code WLM dedicate alle query di breve durata. Inoltre, le query di lunga durata non devono necessariamente contendersi gli slot in una coda WLM. Ciò significa che è possibile configurare le code WLM in modo da utilizzare meno slot di query. Se si utilizza una concorrenza inferiore, la velocità effettiva delle query aumenta e le prestazioni complessive del sistema migliorano per la maggior parte dei carichi di lavoro. Per ulteriori informazioni su SQA, consulta Working with short query acceleration nella documentazione di Amazon Redshift.
Interrogazione SQL
Una query al database è una richiesta di dati da un database. La richiesta deve arrivare in un cluster Amazon Redshift che utilizza SQL. Amazon Redshift supporta strumenti client SQL che si connettono tramite Java Database Connectivity (JDBC) e Open Database Connectivity (ODBC). Puoi usare la maggior parte degli strumenti del client SQL che supportano i driver JDBC o ODBC.
Struttura delle interrogazioni
Il modo in cui viene scritta la query influisce notevolmente sulle sue prestazioni. Si consiglia di scrivere query per elaborare e restituire la quantità di dati necessaria a soddisfare le proprie esigenze. Per ulteriori informazioni su come strutturare le query, consulta la sezione sulle migliori pratiche per la progettazione di query Amazon Redshift di questa guida.
Compilazione del codice
Amazon Redshift genera e compila il codice per ogni piano di esecuzione delle query. Il codice compilato viene eseguito più velocemente perché elimina le spese di gestione derivanti dall'utilizzo di un interprete. In genere, la prima volta che il codice viene generato e compilato, comporta dei costi generali. Di conseguenza, le prestazioni di una query possono essere fuorvianti la prima volta che la esegui. I costi generali potrebbero essere particolarmente evidenti quando si eseguono query una tantum. Si consiglia di eseguire la query una seconda volta per determinarne le prestazioni tipiche.
Amazon Redshift utilizza un servizio di compilazione serverless per ridimensionare le compilazioni di query oltre le risorse di calcolo di un cluster Amazon Redshift. I segmenti del codice compilato vengono memorizzati in locale nel cluster e in una cache virtuale illimitata. Questa cache persiste dopo il riavvio del cluster. Le chiamate successive della stessa query vengono eseguite più velocemente perché possono saltare la fase di compilazione. La cache non è compatibile tra le versioni di Amazon Redshift, quindi il codice viene ricompilato quando le query vengono eseguite dopo un aggiornamento della versione. Utilizzando un servizio di compilazione scalabile, Amazon Redshift è in grado di compilare codice in parallelo per fornire prestazioni rapide e costanti. L'entità dell'accelerazione del carico di lavoro dipende dalla complessità e dalla simultaneità delle query.