sys.dm_exec_query_optimizer_info (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Gibt detaillierte Statistiken zum Vorgang des SQL Server-Abfrageoptimierrs zurück. Diese Sicht können Sie beim Optimieren einer Arbeitsauslastung verwenden, um Probleme oder Verbesserungen bei der Abfrageoptimierung zu identifizieren. Sie können beispielsweise anhand der Gesamtanzahl der Optimierungen, des Wertes für die verstrichene Zeit und des Endkostenwertes die Abfrageoptimierungen der aktuellen Arbeitsauslastung und sämtliche während des Optimierungsvorgangs beobachteten Änderungen vergleichen. Einige Leistungsindikatoren stellen Daten bereit, die nur für die interne Sql Server-Diagnoseverwendung relevant sind. Diese Leistungsindikatoren sind als "Internal only" gekennzeichnet.

Hinweis

Um dies von Azure Synapse Analytics oder Analytics Platform System (PDW) aufzurufen, verwenden Sie den Namen sys.dm_pdw_nodes_exec_query_optimizer_info. Diese Syntax wird vom serverlosen SQL-Pool in Azure Synapse Analytics nicht unterstützt.

Name Datentyp Beschreibung
Zähler nvarchar(4000) Name des Statistikereignisses des Abfrageoptimierers.
occurrence bigint Anzahl der Vorkommen von Optimierungsereignissen für diesen Leistungsindikator.
value float Durchschnittlicher Eigenschaftswert pro Ereignisvorkommen.
pdw_node_id int Gilt für: Azure Synapse Analytics, Analytics Platform System (PDW)

Der Bezeichner für den Knoten, auf dem sich diese Verteilung befindet.

Berechtigungen

Für SQL Server und SQL Managed Instance ist die VIEW SERVER STATE-Berechtigung erforderlich.

Für SQL-Datenbank Standard-, S0- und S1-Dienstziele sowie für Datenbanken in elastischen Pools ist das Serveradministratorkonto, das Microsoft Entra-Administratorkonto oder die Mitgliedschaft in der ##MS_ServerStateReader##Serverrolle erforderlich. Für alle anderen SQL-Datenbank-Dienstziele ist entweder die VIEW DATABASE STATE-Berechtigung für die Datenbank oder die Mitgliedschaft in der ##MS_ServerStateReader##-Serverrolle erforderlich.

Berechtigungen für SQL Server 2022 und höher

Erfordert die VIEW SERVER PERFORMANCE STATE-Berechtigung auf dem Server.

Hinweise

sys.dm_exec_query_optimizer_info enthält die folgenden Eigenschaften (Leistungsindikatoren). Alle Vorkommenwerte sind kumulativ und werden beim Neustarten des Systems auf 0 festgelegt. Alle Werte für Wertfelder werden beim Neustarten des Systems auf NULL festgelegt. Alle Wertspaltenwerte, die einen Durchschnitt angeben, verwenden den Vorkommenwert aus derselben Zeile als Nenner bei der Berechnung des Durchschnitts. Alle Abfrageoptimierungen werden gemessen, wenn SQL Server Änderungen an dm_exec_query_optimizer_info bestimmt, einschließlich benutzer- und vom System generierter Abfragen. Die Ausführung eines bereits zwischengespeicherten Plans ändert keine Werte in dm_exec_query_optimizer_info, es sind nur Optimierungen von Bedeutung.

Leistungsindikator Vorkommen Wert
optimizations Gesamtzahl der Optimierungen. Nicht zutreffend
elapsed time Gesamtzahl der Optimierungen. Durchschnittlich verstrichene Zeit pro Optimierung einer einzelnen Anweisung (Abfrage), in Sekunden.
final cost Gesamtzahl der Optimierungen. Durchschnittliche geschätzte Kosten für einen optimierten Plan in internen Kosteneinheiten.
trivial plan Nur intern Nur intern
Tasks Nur intern Nur intern
no plan Nur intern Nur intern
Suche 0 Nur intern Nur intern
search 0 time Nur intern Nur intern
0 Aufgaben suchen Nur intern Nur intern
Suche 1 Nur intern Nur intern
Suche 1 Zeit Nur intern Nur intern
Suche 1 Aufgaben Nur intern Nur intern
search 2 Nur intern Nur intern
search 2 time Nur intern Nur intern
search 2 tasks Nur intern Nur intern
Stufe 0 auf Stufe 1 erhöhen Nur intern Nur intern
gain stage 1 to stage 2 Nur intern Nur intern
timeout Nur intern Nur intern
memory limit exceeded Nur intern Nur intern
insert stmt Anzahl der für INSERT-Anweisungen ausgeführten Optimierungen. Nicht zutreffend
delete stmt Anzahl der für DELETE-Anweisungen ausgeführten Optimierungen. Nicht zutreffend
update stmt Anzahl der für UPDATE-Anweisungen ausgeführten Optimierungen. Nicht zutreffend
contains subquery Anzahl der Optimierungen für eine Abfrage, die mindestens eine Unterabfrage enthält. Nicht zutreffend
unnest failed Nur intern Nur intern
Tabellen Gesamtzahl der Optimierungen. Gesamtzahl der Tabellen, auf die pro optimierte Abfrage verwiesen wird.
Hinweise Häufigkeit, mit der ein Hinweis angegeben wurde. Zu diesen Hinweisen gehören die Abfragehinweise JOIN, GROUP, UNION und FORCE ORDER, die SET-Option FORCE PLAN sowie Joinhinweise. Nicht zutreffend
order hint Häufigkeit, mit der ein FORCE ORDER-Hinweis angegeben wurde. Nicht zutreffend
join hint Häufigkeit, mit der der Joinalgorithmus von einem Joinhinweis erzwungen wurde. Nicht zutreffend
view reference Häufigkeit, mit der in einer Abfrage auf eine Sicht verwiesen wurde. Nicht zutreffend
remote query Anzahl der Optimierungen, bei denen die Abfrage auf mindestens eine Remotedatenquelle verwiesen hat, wie z. B. auf eine Tabelle mit einem vierteiligen Namen oder ein OPENROWSET-Ergebnis. Nicht zutreffend
maximum DOP Gesamtzahl der Optimierungen. Durchschnittlicher effektiver MAXDOP-Wert für einen optimierten Plan. Standardmäßig wird das effektive MAXDOP durch den maximalen Grad der Parallelitätsserverkonfigurationsoption bestimmt und kann für eine bestimmte Abfrage durch den Wert des MAXDOP-Abfragehinweiss außer Kraft gesetzt werden.
maximum recursion level Anzahl der Optimierungen, bei denen mit dem Abfragehinweis eine höhere MAXRECURSION-Ebene als 0 angegeben wurde. Durchschnittliche MAXRECURSION-Ebene in Optimierungen, bei denen mit dem Abfragehinweis eine maximale Rekursionsebene angegeben wurde.
indexed views loaded Nur intern Nur intern
indexed views matched Anzahl der Optimierungen, bei denen für mindestens eine indizierte Sicht eine Übereinstimmung gefunden wurde. Durchschnittliche Anzahl der übereinstimmenden Sichten.
indexed views used Anzahl der Optimierungen, bei denen nach dem Abgleich mindestens eine indizierte Sicht im Ausgabeplan verwendet wird. Durchschnittliche Anzahl der verwendeten Sichten.
indexed views updated Anzahl der Optimierungen einer DML-Anweisung, die einen Plan erstellen, von dem mindestens eine indizierte Sicht verwaltet wird. Durchschnittliche Anzahl der verwalteten Sichten.
dynamic cursor request Anzahl der Optimierungen, in denen eine Anforderung nach dynamischen Cursorn angegeben wurde. Nicht zutreffend
fast forward cursor request Anzahl der Optimierungen, in denen eine Anforderung nach schnellen Vorwärtscursorn angegeben wurde. Nicht zutreffend
merge stmt Anzahl der für MERGE-Anweisungen ausgeführten Optimierungen. Nicht verfügbar

Beispiele

.A Anzeigen von Statistiken zur Ausführung von Optimierern

Was sind die aktuellen Optimiererausführungsstatistiken für diese Instanz von SQL Server?

SELECT * FROM sys.dm_exec_query_optimizer_info;  

B. Anzeigen der Gesamtzahl von Optimierungen

Wie viele Optimierungen werden ausgeführt?

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

C. Durchschnittliche verstrichene Zeit pro Optimierung

Wie lange dauert eine Optimierung im Durchschnitt?

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

D: Anteil der Optimierungen mit Unterabfragen

Wie hoch liegt der Anteil der optimierten Abfragen mit einer Unterabfrage?

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;  

Weitere Informationen

Dynamische Verwaltungssichten und Funktionen (Transact-SQL)
Dynamische Verwaltungssichten und -funktionen im Zusammenhang mit der Ausführung (Transact-SQL)