Conseiller de distribution dans Azure Synapse SQL

Application : pools SQL dédiés Azure Synapse Analytics (anciennement SQL DW)

Dans Azure Synapse SQL, chaque table est distribuée à l’aide de la stratégie choisie par le client (tourniquet, hachage distribué, répliqué). La stratégie de distribution choisie peut affecter considérablement les performances des requêtes.

La fonctionnalité Conseiller de distribution (DA) de Azure Synapse SQL analyse les requêtes client et recommande les meilleures stratégies de distribution pour les tables afin d’améliorer les performances des requêtes. Les requêtes à considérer par le conseiller peuvent être fournies par le client ou extraites des requêtes historiques disponibles dans DMV.

Notes

Le Conseiller de distribution est actuellement en préversion pour Azure Synapse Analytics. Les fonctionnalités d’évaluation sont destinées à des tests uniquement et ne doivent pas être utilisées sur des instances de production ou des données de production. En tant que fonctionnalité d’évaluation, le Conseiller de distribution est soumis à des modifications de comportement ou de fonctionnalité. Conservez également une copie de vos données de test si les données sont importantes. Distribution Advisor ne prend pas en charge les tables distribuées à plusieurs colonnes.

Prérequis

  • Exécutez l’instruction T-SQL SELECT @@version pour vous assurer que votre pool SQL dédié Azure Synapse Analytics est la version 10.0.15669 ou ultérieure. Si votre version est inférieure, une nouvelle version doit atteindre automatiquement vos pools SQL dédiés approvisionnés pendant leur cycle de maintenance.

  • Assurez-vous que les statistiques sont disponibles et à jour avant d’exécuter le conseiller. Pour plus d’informations sur les statistiques, consultez les articles Gérer les statistiques des tables, CREATE STATISTICS et UPDATE STATISTICS.

  • Activez le conseiller de distribution Azure Synapse pour la session active avec la commande T-SQL SET RECOMMENDATIONS.

Analyser la charge de travail et générer des recommandations de distribution

Le tutoriel suivant explique l’exemple de cas d’utilisation de la fonctionnalité Conseiller de distribution pour analyser les requêtes client et recommander les meilleures stratégies de distribution.

Le Conseiller de distribution analyse uniquement les requêtes exécutées sur les tables utilisateur.

1. Créer des procédures stockées du Conseiller de distribution

Pour exécuter facilement le conseiller, créez deux nouvelles procédures stockées dans la base de données. Exécutez le script CreateDistributionAdvisor_PublicPreview disponible en téléchargement à partir de GitHub :

Commande Description
dbo.write_dist_recommendation Définit les requêtes que le DA va analyser. Vous pouvez fournir des requêtes manuellement ou lire jusqu’à 100 requêtes passées à partir des charges de travail réelles dans sys.dm_pdw_exec_requests.
dbo.read_dist_recommendation Exécute le conseiller et génère des recommandations.

Voici un exemple de la façon dont vous pouvez exécuter le conseiller.

2a. Exécuter le conseiller sur la charge de travail passée dans DMV

Exécutez les commandes suivantes pour lire jusqu’aux 100 dernières requêtes de la charge de travail pour obtenir des recommandations d’analyse et de distribution :

EXEC dbo.write_dist_recommendation <Number of Queries max 100>, NULL
go
EXEC dbo.read_dist_recommendation;
go

Pour voir quelles requêtes ont été analysées par le DA, exécutez le script e2e_queries_used_for_recommendations.sql disponible en téléchargement à partir de GitHub.

2b. Exécuter le conseiller sur les requêtes sélectionnées

Le premier paramètre doit dbo.write_dist_recommendation être défini sur 0, et le deuxième paramètre est une liste séparée par des points-virgules allant jusqu’à 100 requêtes analysées par DA. Dans l’exemple ci-dessous, nous voulons voir la recommandation de distribution pour deux instructions séparées par des points-virgules, select count (*) from t1;etselect * from t1 join t2 on t1.a1 = t2.a1;.

EXEC dbo.write_dist_recommendation 0, 'select count (*) from t1; select * from t1 join t2 on t1.a1 = t2.a1;'
go
EXEC dbo.read_dist_recommendation;
go

3. Afficher les recommandations

La dbo.read_dist_recommendation procédure système stockée retourne des recommandations au format suivant une fois l’exécution terminée :

Nom de la colonne Description
Table_name Table analysée par le DA. Une ligne par table, quelle que soit la modification de la recommandation.
Current_Distribution Stratégie de distribution de tables actuelle.
Recommended_Distribution Distribution recommandée. Cela peut être le même que Current_Distribution s’il n’existe aucune modification recommandée.
Distribution_Change_Command Commande T-SQL CTAS pour implémenter la recommandation.

4. Mettre en œuvre les conseils

  • Exécutez la commande CTAS fournie par le Conseiller de distribution pour créer de nouvelles tables avec la stratégie de distribution recommandée.
  • Modifiez les requêtes à exécuter sur de nouvelles tables.
  • Exécutez des requêtes sur les anciennes et nouvelles tables à comparer pour améliorer les performances.

Notes

Pour nous aider à améliorer le Conseiller de distribution, répondez à cette enquête rapide.

Résolution des problèmes

Cette section contient des scénarios de résolution des problèmes courants et des erreurs courantes que vous pouvez rencontrer.

1. État obsolète d’une exécution précédente du conseiller

1a. Symptôme :

Ce message d’erreur s’affiche lors de l’exécution du conseiller :

Msg 110813, Level 16, State 1, Line 1
Calling GetLastScalarResult() before executing scalar subquery.
1b. Prévention :
  • Vérifiez que vous utilisez des guillemets simples '' pour exécuter le conseiller sur les requêtes sélectionnées.
  • Démarrez une nouvelle session dans SSMS et exécutez le conseiller.

2. Erreurs lors de l’exécution du conseiller

2a. Symptôme :

Le volet 'résultat ' affiche CommandToInvokeAdvisorString ci-dessous, mais n’affiche pasRecommendationOutput.

Par exemple, vous voyez uniquement l’ensemble de résultats Command_to_Invoke_Distribution_Advisor.

Screenshot of the output of a T-SQL result showing the Command_to_Invoke_Distribution_Advisor.

Mais pas le deuxième jeu de résultats contenant les commandes T-SQL de modification de table :

Screenshot of the output of a T-SQL result showing the Command_to_Invoke_Distribution_Advisor with a second resultset containing table change T-SQL commands.

2b. Prévention :
  • Vérifiez la sortie CommandToInvokeAdvisorString ci-dessus.

  • Supprimez les requêtes qui peuvent ne plus être valides, qui ont peut-être été ajoutées ici à partir des requêtes sélectionnées manuellement ou de la DMV en modifiant WHERE la clause dans : Requêtes considérées par le DA.

3. Erreur lors du post-traitement de la sortie de recommandation

3a. Symptôme :

Le message d’erreur suivant s’affiche.

Invalid length parameter passed to the LEFT or SUBSTRING function.
3b. Prévention :

Vérifiez que vous disposez de la version la plus récente de la procédure stockée à partir de GitHub :

Commentaires sur les groupes de produits Azure Synapse

Pour nous aider à améliorer le Conseiller de distribution, répondez à cette enquête rapide.

Si vous avez besoin d’informations non fournies dans cet article, la page de questions Microsoft Q&A sur Azure Synapse vous permet de poser des questions à d’autres utilisateurs et au groupe du produit Azure Synapse Analytics.

Nous suivons activement ce forum pour vous assurer que vos questions sont traitées par un autre utilisateur ou un membre de notre équipe. Si vous préférez poser vos questions sur Stack Overflow, nous avons également un Forum Stack Overflow sur Azure Synapse Analytics.

Pour les demandes de fonctionnalités, utilisez la page de Commentaires pour Azure Synapse Analytics. L’ajout de demandes ou le vote pour d’autres demandes nous aide à nous concentrer sur les fonctionnalités les plus demandées.

Étapes suivantes