sys.dm_exec_query_optimizer_info (Transact-SQL)

 

CETTE RUBRIQUE S’APPLIQUE À : ouiSQL Server (à partir de la version 2008)ouiAzure SQL DatabaseouiAzure SQL Data WarehouseouiParallel Data Warehouse

Retourne des statistiques détaillées sur le fonctionnement de l'optimiseur de requête SQL Server. Vous pouvez utiliser cette vue lorsque vous paramétrez une charge de travail pour identifier des problèmes ou des améliorations d'optimisation des requêtes. Par exemple, vous pouvez utiliser le nombre total des optimisations, la valeur du temps écoulé et la valeur de coût final pour comparer les optimisations de requête de la charge en cours et les modifications observées au cours du processus de paramétrage. Certains compteurs fournissent des données qui s'appliquent uniquement à l'usage interne du diagnostic SQL Server. Ces compteurs indiquent la mention « Interne uniquement ».

System_CAPS_ICON_note.jpg Remarque


Appeler à partir de Azure SQL Data Warehouse ou Parallel Data Warehouse, utilisez le nom sys.dm_pdw_nodes_exec_query_optimizer_info.

NomType de donnéesDescription
compteurnvarchar (4000)Nom de l'événement statistique de l'optimiseur.
occurrencebigintNombre d'occurrences de l'événement d'optimisation pour ce compteur.
valeurfloatValeur moyenne de la propriété par occurrence de l'événement.
« pdw_node_id »intS’applique à: Azure SQL Data Warehouse, Parallel Data Warehouse

L’identificateur pour le nœud de cette distribution.

Sur SQL Server nécessite l’autorisation VIEW SERVER STATE sur le serveur.

Sur Base de données SQL niveaux Premium requiert l’autorisation VIEW DATABASE STATE dans la base de données. Sur Base de données SQL base niveaux Standard et nécessitent le Base de données SQL compte d’administrateur.

Sys.dm_exec_query_optimizer_info contient les propriétés suivantes (compteurs). Toutes les valeurs d'occurrence sont cumulatives et sont définies à 0 au redémarrage du système. Tous les champs de valeurs sont initialisés à NULL au redémarrage du système. Toutes les colonnes de valeurs qui indiquent une moyenne utilisent la valeur d'occurrence de la ligne comme dénominateur pour le calcul de la moyenne. Toutes les optimisations de requêtes sont mesurées lorsque SQL Server détermine les modifications de dm_exec_query_optimizer_info, y compris les requêtes générées par l’utilisateur et système. L’exécution d’un plan déjà mis en cache ne modifie pas les valeurs de dm_exec_query_optimizer_info, seules les optimisations sont significatives.

CompteurOccurrenceValue
optimizationsNombre total d'optimisations.Non applicable
elapsed timeNombre total d'optimisations.Temps moyen écoulé par optimisation d'une instruction (requête) individuelle, en secondes.
final costNombre total d'optimisations.Estimation du coût moyen d'un plan optimisé en unités de coût internes.
trivial planInterne uniquementInterne uniquement
tâchesInterne uniquementInterne uniquement
no planInterne uniquementInterne uniquement
search 0Interne uniquementInterne uniquement
search 0 timeInterne uniquementInterne uniquement
search 0 tasksInterne uniquementInterne uniquement
search 1Interne uniquementInterne uniquement
search 1 timeInterne uniquementInterne uniquement
search 1 tasksInterne uniquementInterne uniquement
search 2Interne uniquementInterne uniquement
search 2 timeInterne uniquementInterne uniquement
search 2 tasksInterne uniquementInterne uniquement
gain stage 0 to stage 1Interne uniquementInterne uniquement
gain stage 1 to stage 2Interne uniquementInterne uniquement
délai d'expirationInterne uniquementInterne uniquement
memory limit exceededInterne uniquementInterne uniquement
insert stmtNombre d'optimisations destinées à des instructions INSERT.Non applicable
delete stmtNombre d'optimisations destinées à des instructions DELETE.Non applicable
update stmtNombre d'optimisations destinées à des instructions UPDATE.Non applicable
contains subqueryNombre d'optimisations associées à une requête qui contient au moins une sous-requête.Non applicable
unnest failedInterne uniquementInterne uniquement
tablesNombre total d'optimisations.Nombre moyen de tables référencées par requête optimisée.
indicationsNombre de définitions d'un certain indicateur. Les indicateurs pris en charge sont : les indicateurs de requête JOIN, GROUP, UNION et FORCE ORDER, l'option de configuration FORCE PLAN et les indicateurs de jointure.Non applicable
indicateur de commandeNombre de définitions d'un indicateur de commande forcée.Non applicable
indicateur de jointureNombre de fois que l'algorithme de jointure a été forcé par un indicateur de jointure.Non applicable
view referenceNombre de fois qu'une vue a été référencée dans une requêteNon applicable
requête distanteNombre d'optimisations dans lesquelles la requête faisait référence à au moins une source de données distante, par exemple une table dont le nom est en quatre parties ou un jeu de résultats OPENROWSET.Non applicable
maximum DOPNombre total d'optimisations.Valeur moyenne réelle de MAXDOP pour un plan optimisé. Par défaut, MAXDOP est déterminée par la max degré de parallélisme configuration du serveur d’option et peut être remplacée par la valeur de l’indicateur de requête MAXDOP pour une requête spécifique.
maximum recursion levelNombre d'optimisations dans lesquelles un niveau MAXRECURSION supérieur à 0 a été spécifié à l'aide de l'indicateur de requête.Niveau MAXRECURSION moyen dans les optimisations où un niveau de récursivité maximum est spécifié à l'aide de l'indicateur de requête.
indexed views loadedInterne uniquementInterne uniquement
indexed views matchedNombre d'optimisations où une ou plusieurs vues indexées ont été trouvées.Nombre moyen de vues mises en correspondance.
indexed views usedNombre d'optimisations où une ou plusieurs vues indexées sont utilisées dans le plan de sortie après avoir trouvé leur correspondance.Nombre moyen de vues utilisées.
indexed views updatedNombre d'optimisations d'une instruction DML produisant un plan qui tient à jour une ou plusieurs vues indexées.Nombre moyen de vues tenues à jour.
dynamic cursor requestNombre d'optimisations où une demande de curseur dynamique a été spécifiée.Non applicable
fast forward cursor requestNombre d'optimisations où une demande de curseur vers l'avant a été spécifiée.Non applicable
merge stmtNombre d'optimisations destinées à des instructions MERGE.Non applicable

A. Affichage de statistiques sur l'exécution de l'optimiseur

Quelles sont les statistiques d'exécution de l'optimiseur actuelles pour cette instance de SQL Server ?

SELECT * FROM sys.dm_exec_query_optimizer_info;  

B. Affichage du nombre total d'optimisations

Quel est le nombre d'optimisations effectué ?

SELECT occurrence AS Optimizations FROM sys.dm_exec_query_optimizer_info  
WHERE counter = 'optimizations';  

C. Temps moyen écoulé par optimisation

Quel est le temps moyen consacré à chaque optimisation ?

SELECT ISNULL(value,0.0) AS ElapsedTimePerOptimization  
FROM sys.dm_exec_query_optimizer_info WHERE counter = 'elapsed time';  

D. Proportion des optimisations qui impliquent des sous-requêtes

Quelle est la proportion des requêtes optimisées qui contenaient une sous-requête ?

SELECT (SELECT CAST (occurrence AS float) FROM sys.dm_exec_query_optimizer_info WHERE counter = 'contains subquery') /  
       (SELECT CAST (occurrence AS float)   
        FROM sys.dm_exec_query_optimizer_info WHERE counter = 'optimizations')  
        AS ContainsSubqueryFraction;  

Vues de gestion dynamique et fonctions &#40 ; Transact-SQL &#41 ;
Vues de gestion dynamique et fonctions &#40 ; liées à l’exécution Transact-SQL &#41 ;

Ajouts de la communauté

AJOUTER
Afficher: