Partager via


Détecter l’asymétrie des données sur les valeurs de clé de distribution

Cet article montre comment détecter l’asymétrie sur la clé de distribution d’une table distribuée dans une appliance Parallel Data Warehouse.

Version du produit d’origine : SQL Server Parallel Data Warehouse
Numéro de base de connaissances d’origine : 3046863

Résumé

L’asymétrie des données peut se produire à plusieurs niveaux différents dans Microsoft SQL Server Parallel Data Warehouse. Cet article se concentre sur les lignes qui sont asymétriques à certaines valeurs. Cela peut entraîner la mise en place d’une table distribuée sur plusieurs données d’une distribution que sur les autres distributions. La requête suivante compte le nombre de lignes qui ont une valeur spécifique pour la clé de distribution de la table :

select distribution_key, count(distribution_key)

from distributed_table

group by distribution_key

--having count(distribtuion_key) >5000

order by count(distribtuion_key) desc

Remarque

La having clause est commentée. Toutefois, si vous souhaitez effectuer une vérification rapide de l'écart important, cette clause pourrait vous renseigner. Vous devrez peut-être ajuster la valeur à quelque chose qui est logique pour votre jeu de résultats. Par exemple, si toutes les valeurs ont 5 000 enregistrements, nous vous recommandons de définir cette valeur sur 7 500 ou 10 000 pour indiquer un problème.

La question du moment où l’asymétrie devient un problème n’a pas de réponse déterministe. L’asymétrie devient un problème lorsque les performances des distributions asymétriques deviennent visibles et que l’application ne peut pas tolérer la situation. La règle de pouce est que l’appliance peut tolérer une asymétrie de 10 à 20 pour cent sur toutes les tables. Dans ce seuil, les distributions asymétriques doivent même être sous concurrence. Au-dessus de ce seuil, vous pouvez commencer à voir des distributions longues lorsque les données sont traitées. Certaines implémentations peuvent être en mesure de tolérer une plus grande asymétrie, et certaines implémentations peuvent être incapables de tolérer cela beaucoup. Les tests sont nécessaires pour déterminer le seuil réel de votre implémentation.

Plus d’informations

Si la valeur asymétrique est également utilisée comme condition de jointure et que l’autre côté est asymétrique vers la même valeur, il peut y avoir une explosion dans le nombre de lignes de la jointure. Cela peut entraîner un certain temps d’exécution des requêtes.

Important

Faites attention au nombre de valeurs NULL, car cela peut entraîner des problèmes de jointure.