Condividi tramite


Rilevare l'asimmetria dei dati sui valori della chiave di distribuzione

Questo articolo illustra come rilevare l'asimmetria nella chiave di distribuzione di una tabella distribuita in un'appliance Parallel Data Warehouse.

Versione originale del prodotto: SQL Server Parallel Data Warehouse
Numero KB originale: 3046863

Riepilogo

L'asimmetria dei dati può verificarsi a diversi livelli in Microsoft SQL Server Parallel Data Warehouse. Questo articolo è incentrato sulle righe asimmetriche con determinati valori. In questo modo una tabella distribuita inserisce più dati in una distribuzione rispetto alle altre distribuzioni. La query seguente conta il numero di righe con un valore specifico per la chiave di distribuzione della tabella:

select distribution_key, count(distribution_key)

from distributed_table

group by distribution_key

--having count(distribtuion_key) >5000

order by count(distribtuion_key) desc

Annotazioni

La having clausola è commentata. Tuttavia, se si vuole eseguire un rapido controllo della presenza di un'asimmetria significativa, questa clausola può indicare. Potrebbe essere necessario modificare il valore con un valore appropriato per il set di risultati. Ad esempio, se tutti i valori hanno 5.000 record, è consigliabile impostare questo valore su 7.500 o 10.000 per indicare un problema.

La domanda di quando l'asimmetria diventa un problema non ha una risposta deterministica. L'asimmetria diventa un problema quando le prestazioni delle distribuzioni asimmetriche diventano evidenti e l'applicazione non può tollerare la situazione. La regola generale è che l'appliance può tollerare un'asimmetria da 10 a 20% in tutte le tabelle. All'interno di questa soglia, le distribuzioni asimmetriche dovrebbero risultare uniformi in concorrenza. Al di sopra di questa soglia, è possibile iniziare a visualizzare alcune distribuzioni a esecuzione prolungata durante l'elaborazione dei dati. Alcune implementazioni possono essere in grado di tollerare un'asimmetria maggiore e alcune implementazioni potrebbero non essere in grado di tollerare molto. Il test è necessario per determinare la soglia effettiva per l'implementazione.

Ulteriori informazioni

Se il valore asimmetrico viene usato anche come condizione di join e l'altro lato è asimmetrico verso lo stesso valore, può verificarsi un'esplosione nel numero di righe dal join. L'esecuzione di query può richiedere molto tempo.

Importante

Prestare particolare attenzione al numero di valori NULL, perché possono causare problemi per i join.