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à.
SPIEGA la ridistribuzione dei dati per i piani di query di Amazon Redshift
Durante le fasi di unione, potrebbe essere necessario che una slice lavori con dati non archiviati localmente e la trasmissione di rete (spostamento di dati tra nodi di calcolo) è l'operazione di interrogazione più costosa.
L'EXPLAINoutput per i join specifica anche un metodo per lo spostamento dei dati all'interno di un cluster per facilitare l'unione. Questo movimento di dati può essere sia una trasmissione che una ridistribuzione.
-
In una trasmissione, i valori dei dati da un lato della combinazione vengono copiati da ogni nodo di calcolo su ogni altro nodo di calcolo, così che ognuno di essi finisca con una copia completa dei dati.
-
In una ridistribuzione, la partecipazione dei valori dei dati viene inviata dalla loro sezione attuale alla nuova sezione (possibilmente su un nodo differente). Solitamente i dati vengono ridistribuiti per far corrispondere la chiave di distribuzione dell'altra tabella che ha partecipato alla combinazione, nel caso in cui la chiave di distribuzione sia una delle colonne di combinazione. Se nessuna delle tabelle dispone di chiavi di distribuzione su una delle colonne di combinazione, entrambe le tabelle vengono distribuite o la tabella interna viene trasmessa a ogni nodo.
L'EXPLAINoutput fa riferimento anche a tabelle interne ed esterne.
-
La tabella interna viene scansionata per prima e viene visualizzata nella parte inferiore del piano di interrogazione. La tabella interna è la tabella che viene analizzata per verificare la corrispondenza delle righe nella tabella di compilazione. Di solito, una tabella interna conservata in memoria è la tabella di origine per l'hashing e, se possibile, è la tabella più piccola delle due che vengono unite.
-
La tabella esterna è la fonte delle righe da confrontare con la tabella interna e di solito viene letta dal disco. L'ottimizzatore di query sceglie la tabella interna ed esterna in base alle statistiche del database relative all'ultima esecuzione del
ANALYZEcomando. L'ordine delle tabelle nellaFROMclausola di una query non determina quale tabella è interna e quale è esterna.
Utilizza i seguenti attributi nei piani di query, per identificare come verranno spostati i dati per facilitare una query:
-
DS_BCAST_INNER — Indica che una copia dell'intera tabella di join interna viene trasmessa a tutti i nodi di calcolo.
-
DS_DIST_ALL_NONE — Non è richiesta alcuna ridistribuzione perché la tabella interna è già stata distribuita a tutti i nodi che utilizzano.
DISTSTYLE ALLL'intera tabella si trova su ogni nodo di calcolo. -
DS_DIST_NONE — Non è richiesta alcuna ridistribuzione perché le slice corrispondenti sono collocate sui nodi di calcolo. Questa è l'opzione più efficiente perché non è previsto alcun trasferimento di rete.
-
DS_DIST_INNER — Indica che la tabella di join interna viene ridistribuita. Se la tabella interna è molto più piccola o viene aggiornata raramente, valuta la possibilità di cambiarla in.
DISTSTYLE ALL -
DS_DIST_OUTER — Indica che la tabella di join esterna viene ridistribuita. Se la tabella esterna è molto più piccola o viene aggiornata raramente, valuta la possibilità di cambiarla in.
DISTSTYLE ALL -
DS_DIST_ALL_INNER — Indica che la tabella di join interna viene inviata a un singolo nodo perché la tabella di join utilizza.
DISTSTYLE ALLQuesto join viene eseguito su un singolo nodo ed è probabile che sia lento. -
DS_DIST_BOTH — Indica che entrambe le tabelle del join vengono ridistribuite su tutti i nodi. Questa è l'opzione peggiore possibile.