Partager via


Analyses des requêtes dans Fabric Data Warehouse

S’applique à :✅ point de terminaison d’analytique SQL et entrepôt dans Microsoft Fabric

Dans Microsoft Fabric, la fonctionnalité Insights de requête est une solution évolutive, durable et extensible permettant d’améliorer l’expérience d’analytique SQL. Grâce aux données de requête historiques, aux insights agrégés et à l’accès au texte de requête réel, vous pouvez analyser et optimiser les performances de vos requêtes. QI fournit des informations sur les requêtes exécutées dans le contexte d’un utilisateur uniquement, les requêtes système ne sont pas prises en compte.

La fonctionnalité Insights de requête fournit un emplacement central pour les données de requête historiques et les insights exploitables pendant 30 jours, ce qui vous permet de prendre des décisions éclairées pour améliorer les performances de votre entrepôt ou de votre point de terminaison d’analytique SQL. Lorsqu’une requête SQL s’exécute dans Microsoft Fabric, la fonctionnalité Insights de requête collecte et consolide ses données d’exécution, ce qui vous fournit des informations précieuses. Vous pouvez afficher le texte de requête complet pour les rôles Administrateur, Membre et Contributeur.

  • Données de requête historiques : Query Insights stocke les données historiques sur les exécutions de requêtes, ce qui vous permet de suivre les modifications de performances au fil du temps. Les requêtes système ne sont pas stockées dans les insights de requête.
  • Insights agrégés : Query Insights agrège les données d’exécution des requêtes en insights qui sont plus exploitables, telles que l’identification des requêtes longues ou la plupart des utilisateurs actifs. Ces agrégations sont basées sur la forme de la requête. Pour plus d’informations, consultez Comment les requêtes similaires sont-elles agrégées pour générer des insights ?
  • Insights de l’entrepôt : Pour comprendre la santé globale de votre entrepôt, utilisez sql_pool_insights vue. Cette vue fournit des métriques au niveau du pool et des indicateurs de pression, ce qui vous permet de surveiller l’allocation des ressources et de diagnostiquer les problèmes de performances entre les pools.

Avant de commencer

Vous devez avoir accès à un point de terminaison d’analytique SQL ou un entrepôt dans un espace de travail de capacité Premium avec des autorisations de contributeur ou supérieures.

Quand avez-vous besoin de la fonctionnalité Insights de requête ?

La fonctionnalité Insights de requête répond à plusieurs questions et préoccupations liées aux performances des requêtes et à l’optimisation des bases de données, notamment :

Analyse des performances des requêtes

  • Quelles sont les performances historiques de nos requêtes ?
  • Existe-t-il des requêtes longues qui nécessitent une attention particulière ?
  • Pouvons-nous identifier les requêtes qui provoquent des goulots d’étranglement des performances ?
  • Le cache a-t-il été utilisé pour mes requêtes ?
  • Quelles requêtes consomment le plus le processeur ?

Optimisation et réglage des requêtes

  • Quelles requêtes sont fréquemment exécutées et peuvent-elles être améliorées ?
  • Pouvons-nous identifier les requêtes ayant échoué ou qui ont été annulées ?
  • Pouvons-nous suivre les modifications des performances des requêtes au fil du temps ?
  • Existe-t-il des requêtes dont les performances sont constamment médiocres ?

Surveillance de l’activité des utilisateurs

  • Qui a envoyé une requête particulière ?
  • Qui sont les utilisateurs les plus actifs ou les utilisateurs disposant des requêtes les plus longues ?

Supervision des ressources et du pool SQL

  • Mon pool SQL a-t-il été sous pression pendant l’exécution de la requête ?
  • À quelle fréquence le pool a-t-il subi des pressions au cours des 24 dernières heures ?
  • Y a-t-il eu des modifications récentes apportées à la capacité de l’espace de travail ou à la configuration du pool ?
  • Quels pools consomment le pourcentage le plus élevé de ressources ?
  • Puis-je mettre en corrélation des événements liés à la pression avec des requêtes qui s'exécutent lentement ?
  • Comment puis-je identifier les tendances de la pression du pool au fil du temps ?

Les vues système suivantes fournissent des réponses à ces questions :

Où pouvez-vous voir les insights de requête ?

Les vues générées automatiquement se trouvent sous le schéma queryinsights dans le point de terminaison d’analytique SQL et l’entrepôt. Dans l’Explorateur Fabric d’un entrepôt, par exemple, recherchez des vues d’insights de requête sous Schémas ,queryinsights , Vues.

Capture d’écran de l’Explorateur Fabric montrant où rechercher des vues d’insights de requête sous Schémas, queryinsights, Vues.

Une fois l’exécution de votre requête terminée, vous voyez ses données d’exécution dans les vues queryinsights de l’entrepôt ou du point de terminaison d’analytique SQL auquel vous étiez connecté. Si vous exécutez une requête inter-bases de données alors que vous êtes dans le contexte WH_2, votre requête apparaît dans les insights de requête de WH_2. Les requêtes terminées peuvent prendre jusqu’à 15 minutes pour apparaître dans les insights de requête en fonction de la charge de travail simultanée en cours d’exécution. Le temps nécessaire pour que les requêtes apparaissent dans les insights de requête augmente avec le nombre de requêtes simultanées en cours d’exécution.

Comment les requêtes similaires sont-elles agrégées pour générer des insights ?

Les requêtes sont considérées comme identiques par les Insights de requêtes si elles ont la même forme, même si les prédicats sont différents.

Vous pouvez utiliser la colonne query hash dans les vues pour analyser des requêtes similaires et descendre dans la hiérarchie de chaque exécution.

Par exemple, les requêtes suivantes sont considérées comme identiques après paramétrage de leurs prédicats :

SELECT * FROM Orders
WHERE OrderDate BETWEEN '1996-07-01' AND '1996-07-31';

and

SELECT * FROM Orders
WHERE OrderDate BETWEEN '2000-07-01' AND '2006-07-31';

Exemples

Identifiez les requêtes que vous avez exécutées au cours des 30 dernières minutes

La requête suivante utilise queryinsights.exec_requests_history et la fonction intégrée USER_NAME(), qui retourne votre nom d’utilisateur de session actuel.

SELECT * FROM queryinsights.exec_requests_history 
WHERE start_time >= DATEADD(MINUTE, -30, GETUTCDATE())
AND login_name = USER_NAME();

Identifier les principales requêtes consommatrices de processeur par temps processeur

La requête suivante retourne les 100 premières requêtes par temps processeur alloué.

SELECT TOP 100 distributed_statement_id, query_hash, allocated_cpu_time_ms, label, command
FROM queryinsights.exec_requests_history
ORDER BY allocated_cpu_time_ms DESC;

Identifier les requêtes qui analysent la plupart des données à partir d’une distance plutôt que d’un cache

Vous pouvez déterminer si l’analyse des données volumineuses pendant l’exécution de la requête ralentit votre requête et prend des décisions pour ajuster votre code de requête en conséquence. Cette analyse vous permet de comparer différentes exécutions de requête et d’identifier si l’écart dans la quantité de données analysées est la raison des modifications de performances.

En outre, vous pouvez évaluer l’utilisation du cache en examinant la somme de data_scanned_memory_mb et data_scanned_disk_mb, et en la comparant à la data_scanned_remote_storage_mb pour les exécutions passées.

Remarque

Les valeurs analysées des données peuvent ne pas tenir compte des données déplacées pendant les étapes intermédiaires de l’exécution de la requête. Dans certains cas, la taille des données déplacées et l'utilisation du processeur nécessaire pour le traitement peuvent être supérieures à ce que la valeur indiquée par les données analysées suggère.

Les valeurs analysées des données apparaissent sous forme de 0 pour les instructions COPY INTO.

SELECT distributed_statement_id, query_hash, data_scanned_remote_storage_mb, data_scanned_memory_mb, data_scanned_disk_mb, label, command
FROM queryinsights.exec_requests_history
ORDER BY data_scanned_remote_storage_mb DESC;

Identifier les requêtes les plus fréquemment exécutées à l’aide d’une sous-chaîne dans le texte de la requête

La requête suivante retourne les requêtes les plus récentes qui correspondent à une certaine chaîne, classées par le nombre d’exécutions réussies en ordre décroissant.

SELECT * FROM queryinsights.frequently_run_queries
WHERE last_run_command LIKE '%<some_label>%'
ORDER BY number_of_successful_runs DESC;

Identifiez les requêtes longues à l’aide d’une sous-chaîne dans le texte de la requête

La requête suivante retourne les requêtes qui correspondent à une chaîne donnée, classées par la durée d’exécution médiane de la requête, en ordre décroissant.

SELECT * FROM queryinsights.long_running_queries
WHERE last_run_command LIKE '%<some_label>%'
ORDER BY median_total_elapsed_time_ms DESC;

Vues des analyses de requêtes