Les insights de requête dans l’entrepôt de données Fabric
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 : la fonctionnalité Insights de requête stocke les données historiques sur les exécutions de requête, 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 : la fonctionnalité Insights des requêtes agrège les données d’exécution des requêtes en insights plus exploitables, telles que l’identification de requêtes longues ou la plupart des utilisateurs actifs. Ces agrégations sont basées sur la forme de requête. Pour plus d’informations, consultez Comment les requêtes similaires sont-elles agrégées pour générer des insights ?
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 d’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 provoquant 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 qui ont é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 des activités 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 ?
Il existe trois vues système pour fournir des réponses à ces questions :
queryinsights.exec_requests_history (Transact-SQL)
- Retourne des informations sur chaque requête SQL/requête terminée.
queryinsights.exec_sessions_history (Transact-SQL)
- Retourne des informations sur les requêtes fréquemment exécutées.
queryinsights.long_running_queries (Transact-SQL)
- Retourne les informations sur les requêtes par heure d’exécution de requête.
queryinsights.frequently_run_queries (Transact-SQL)
- Retourne des informations sur les requêtes fréquemment exécutées.
Où pouvez-vous voir les insights de requête ?
Les vues générées automatiquement se trouvent sous le schéma queryinsights
dans point de terminaison d’analytique SQL et 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.
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 Query Insights si les requêtes ont la même forme, même si les prédicats peuvent être 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';
et
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 du processeur requise pour le traitement peut être supérieure à la valeur analysée des données.
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;
Identifiez 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 l’heure médiane d’exécution 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;