Fattori che influenzano le prestazioni della query - Amazon Redshift

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 che influenzano le prestazioni della query

Vari fattori possono avere delle ripercussioni sulle prestazioni delle query. I seguenti aspetti dei tuoi dati, dei cluster e delle operazioni del database giocano tutti un ruolo fondamentale su quanto velocemente verranno elaborate le query.

  • Numero di nodi, processori o sezioni: un nodo di calcolo è diviso in sezioni. Più nodi significano più processori e più sezioni. Queste consentono alle tue query di essere elaborate più velocemente attraverso l'esecuzione in contemporanea delle porzioni della query all'interno delle sezioni. Tuttavia, più nodi significano anche una spesa maggiore, quindi avrai bisogno di trovare l'equilibrio tra costi e prestazioni proprie del tuo sistema. Per ulteriori informazioni sull'architettura dei cluster Amazon Redshift, consultare Architettura del sistema di data warehouse.

  • Node types (Tipi di nodi): un cluster Amazon Redshift può utilizzare uno dei diversi tipi di nodi. 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. Per ulteriori informazioni sui tipi di nodo, consulta Panoramica dei cluster di Amazon Redshift nella Guida alla gestione di Amazon Redshift.

  • Distribuzione dei dati: Amazon Redshift archivia i dati della tabella sui nodi di calcolo in base allo stile della distribuzione della 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. Per ulteriori informazioni, consultare Utilizzo degli stili di distribuzione dati.

  • Ordinamento dei dati: Amazon Redshift archivia in modo ordinato i dati della tabella sul disco in base alle chiavi di ordinamento della tabella. L'ottimizzatore e l'elaboratore di query utilizzano le informazioni sulla posizione dei dati per ridurre il numero dei blocchi da scansionare, con il conseguente miglioramento della velocità di query. Per ulteriori informazioni, consultare Utilizzo delle chiavi di ordinamento.

  • Dimensioni set di dati: un volume di dati maggiore nel cluster può rallentare le prestazioni delle query perché è necessario eseguire la scansione e ridistribuire un numero maggiore di righe. Puoi ridurre questo effetto eseguendo il vacuum e archiviando i dati regolarmente, oltre che mediante l'uso di un predicato che limiti l'insieme dei dati della query.

  • Operazioni simultanee: l'esecuzione contemporanea di più operazioni può avere ripercussioni sulle prestazioni della query. Ogni operazione impiega uno o più slot in una coda di query disponibile e utilizza la memoria relativa a questi slot. Se si stanno eseguendo altre operazioni, è possibile che non siano sufficienti gli slot della coda di query disponibili. In questo caso, la query dovrà attendere che si aprano gli slot prima che possa cominciare l'elaborazione. Per ulteriori informazioni sulla creazione e configurazione di code di query, consultare Implementazione della gestione del carico di lavoro.

  • Struttura della query: il modo in cui viene scritta la query avrà delle ripercussioni sulle relative prestazioni. Per quanto possibile, scrivi le query affinché elaborino e restituiscano la minor quantità di dati possibile per le tue necessità. Per ulteriori informazioni, consultare Best practice di Amazon Redshift per la progettazione di query.

  • Compilazione del codice: Amazon Redshift genera e compila il codice per ogni piano di esecuzione di query.

    Il codice compilato viene eseguito più velocemente perché elimina le spese di gestione derivanti dall'utilizzo di un interprete. Avrai sempre costi di gestione la prima volta che verrà generato e compilato il codice. Di conseguenza, le prestazioni di una query possono essere fuorvianti la prima volta che la esegui. I costi di gestione possono essere più evidenti quando esegui query occasionali (ad hoc). Eseguire la query una seconda volta per determinare le sue 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 successive esecuzioni della stessa query possono essere eseguite più rapidamente, in quanto è possibile saltare la fase di compilazione.

    La cache non è compatibile tra le versioni di Amazon Redshift, quindi la cache di compilazione viene svuotata e il codice viene ricompilato quando le query vengono eseguite dopo un aggiornamento della versione. Se le query hanno SLA rigorosi, consigliamo di eseguire in anticipo i segmenti di query che scansionano i dati dalle tabelle dei cluster. Ciò consente ad Amazon Redshift di memorizzare nella cache i dati della tabella di base, riducendo i tempi di pianificazione delle query 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.