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
.
Mais pas le deuxième jeu de résultats contenant les commandes T-SQL de modification de table :
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
- SET RECOMMENDATIONS (Transact-SQL)
- Chargement des données dans un pool SQL dédié
- Stratégies de chargement de données pour un pool SQL dédié dans Azure Synapse Analytics.
- Architecture de pool SQL dédié (anciennement SQL DW) dans Azure Synapse Analytics
- Aide-mémoire pour les pools SQL dédiés (anciennement SQL DW) dans Azure Synapse Analytics