Intelligente Abfrageverarbeitung in SQL-Datenbanken

Gilt für: SQL Server (alle unterstützten Versionen) Azure SQL-Datenbank Azure SQL Managed Instance

Die Featurefamilie „Intelligente Abfrageverarbeitung“ (Intelligent Query Processing, IQP) umfasst Features mit weitreichenden Auswirkungen, die die Leistung vorhandener Workloads mit minimalem Implementierungsaufwand verbessern. In der folgenden Grafik wird die Familie der IQP-Features beschrieben und als sie zum ersten Mal für SQL Server eingeführt wurden. Alle IQP-Features sind in Azure SQL Managed Instance und Azure SQL Datenbank verfügbar. Einige Features hängen von der Kompatibilitätsstufe der Datenbank ab.

Ein Diagramm der Featurefamilie „Intelligente Abfrageverarbeitung und ihrer ersten Einführung in SQL Server.

In diesem 6-minütigen Video erhalten Sie einen Überblick über die intelligente Abfrageverarbeitung:

Informationen zu Demos und Beispielcode für intelligente Abfrageverarbeitungsfeatures (IQP) auf GitHub finden Sie unter https://aka.ms/IQPDemos.

Sie können Workloads automatisch für die intelligente Abfrageverarbeitung anpassen, indem Sie den geeigneten Datenbank-Kompatibilitätsgrad für die Datenbank aktivieren. Diesen können Sie mit Transact-SQL festlegen. Beispiel:

ALTER DATABASE [WideWorldImportersDW] SET COMPATIBILITY_LEVEL = 150;

In der folgenden Tabelle sind Details zu allen Features der intelligenten Abfrageverarbeitung dargestellt, sowie deren jeweiligen Anforderungen für den Datenbank-Kompatibilitätsgrad.

IQP-Features für SQL Server 2022 (16.x) Vorschau, Azure SQL Datenbank, Azure SQL Managed Instance

IQP-Feature Unterstützt in Azure SQL-Datenbank und Verwaltete Azure SQL-Instanz Unterstützt in SQL Server Beschreibung
Adaptive Joins (Batchmodus) Ja, beginnend mit Datenbankkompatibilitätsebene 140 Ja, beginnend mit SQL Server 2017 (14.x) mit Datenbankkompatibilitätsebene 140 Adaptive Joins wählen je nach tatsächlichen Eingabezeilen während der Laufzeit dynamisch einen Jointyp aus.
Approximate Count Distinct Ja Ja, ab SQL Server 2019 (15.x) Stellt die geschätzte Abfrageverarbeitung für Big Data-Szenarios mit dem Vorteil einer hohen Leistung und einem niedrigen Speicherbedarf bereit.
Batchmodus bei Rowstore Ja, beginnend mit Datenbankkompatibilitätsebene 150 Ja, beginnend mit SQL Server 2019 (15.x) mit Kompatibilitätsebene 150 Stellt den Batchmodus für CPU-gebundene relationale Data Warehouse-Workloads bereit, ohne Columnstore-Indizes zu benötigen.
Bewertung der Kardinalität (CE) Ja, beginnend mit Datenbankkompatibilitätsebene 160 Ja, ab SQL Server 2022 (16.x) Vorschau mit Kompatibilitätsebene 160 Passt die Kardinalitätsschätzungen für wiederholte Abfragen automatisch an, um Arbeitslasten zu optimieren, bei denen ineffiziente CE-Annahmen eine schlechte Abfrageleistung verursachen. Das Feedback zur Kardinalitätsschätzung identifiziert und verwendet eine Modellannahme, die besser zu einer bestimmten Abfrage- und Datenverteilung passt, um die Qualität des Abfrageausführungsplans zu verbessern.
Grad des Parallelismus (DOP)-Feedbacks Ja, beginnend mit Datenbankkompatibilitätsebene 160 Ja, ab SQL Server 2022 (16.x) Vorschau mit Kompatibilitätsebene 160 Passt den Grad des Parallelismus automatisch an, um wiederholte Abfragen zu optimieren, um für Workloads zu optimieren, bei denen ineffizienter Parallelismus Leistungsprobleme verursachen können. Erfordert, dass Abfragespeicher aktiviert werden.
Verschachtelte Ausführung Ja, beginnend mit Datenbankkompatibilitätsebene 140 Ja, beginnend mit SQL Server 2017 (14.x) mit Datenbankkompatibilitätsebene 140 Verwendet die tatsächliche Kardinalität der mehrwertigen Tabellentabellenfunktion, die bei der ersten Kompilierung anstelle einer festen Schätzung aufgetreten ist.
Feedback zur Speichererteilung (Batchmodus) Ja, beginnend mit Datenbankkompatibilitätsebene 140 Ja, beginnend mit SQL Server 2017 (14.x) mit Datenbankkompatibilitätsebene 140 Wenn es für eine Abfrage im Batchmodus Operationen gibt, die sich auf den Datenträger auswirken, wird für anschließende Ausführungen mehr Speicher hinzugefügt. Wenn eine Abfrage 50 % des darin zugeordneten Speichers > verschwendet, verringern Sie die Speicherzuteilungsgröße für aufeinander folgende Ausführungen.
Feedback zur Speichererteilung (Zeilenmodus) Ja, beginnend mit Datenbankkompatibilitätsebene 150 Ja, beginnend in SQL Server 2019 (15.x) mit Datenbankkompatibilitätsebene 150 Wenn es für eine Abfrage im Zeilenmodus Operationen gibt, die sich auf den Datenträger auswirken, wird für anschließende Ausführungen mehr Speicher hinzugefügt. Wenn eine Abfrage 50 % des darin zugeordneten Speichers > verschwendet, verringern Sie die Speicherzuteilungsgröße für aufeinander folgende Ausführungen.
Feedback zur Speichererteilung (Percentile) Ja, beginnend mit Datenbankkompatibilitätsebene 150 Ja, beginnend mit SQL Server 2022 (16.x) Vorschau) mit Datenbankkompatibilitätsebene 140 Behebt vorhandene Einschränkungen des Feedbacks zur Speicherzuweisung auf nicht intrusive Weise.
Speichererteilung, CE und DOP-Feedbackpersistenz Ja, beginnend mit Datenbankkompatibilitätsebene 160 Ja, beginnend mit SQL Server 2022 (16.x) Vorschau) mit Datenbankkompatibilitätsebene 160 Behebt vorhandene Einschränkungen des Feedbacks zur Speichererteilung auf eine nicht intrusive Weise, indem die ausführung der letzten Abfrage einbezogen wird, um Feedback zu verfeinern. Erfordert, dass Abfragespeicher für die Datenbank und im Modus "Schreibzugriff" aktiviert werden.
Erzwingen des optimierten Plans Ja, beginnend mit Datenbankkompatibilitätsebene 160 Ja, beginnend mit SQL Server 2022 (16.x) Vorschau) mit Datenbankkompatibilitätsebene 160 Reduziert den Kompilierungsaufwand für wiederholte erzwungene Abfragen. Weitere Informationen finden Sie unter "Optimierter Plan", der mit Abfragespeicher erzwungen wird.
Inlining benutzerdefinierter Skalarfunktionen Ja, beginnend mit Datenbankkompatibilitätsebene 150 Ja, beginnend in SQL Server 2019 (15.x) mit Datenbankkompatibilitätsebene 150 Benutzerdefinierte Skalarfunktionen werden in äquivalente relationale Ausdrücke transformiert, für die „Inlining“ in die aufrufende Abfrage ausgeführt wird, was häufig zu erheblichen Leistungssteigerungen führt.
Optimierung des Parameterempfindlichkeitsplans Ja, beginnend mit Datenbankkompatibilitätsebene 150 Ja, (Ab SQL Server 2022 (16.x) Vorschau) mit Datenbankkompatibilitätsebene 150 Parameter Vertraulichkeitsplanoptimierung behebt das Szenario, in dem ein einzelner zwischengespeicherter Plan für eine parametrisierte Abfrage für alle möglichen eingehenden Parameterwerte, z. B. nicht einheitliche Datenverteilungen, nicht optimal ist.
Verzögerte Kompilierung von Tabellenvariablen Ja, beginnend mit Datenbankkompatibilitätsebene 150 Ja, beginnend in SQL Server 2019 (15.x) mit Datenbankkompatibilitätsebene 150 Verwendet die tatsächliche Kardinalität der Tabellenvariablen, die bei der ersten Kompilierung anstelle einer festen Schätzung aufgetreten ist.

IQP-Features für SQL Server 2019 (15.x)

IQP-Feature Unterstützt in SQL Server 2019 (15.x) Beschreibung
Adaptive Joins (Batchmodus) Ja, beginnend mit SQL Server 2017 (14.x) mit Datenbankkompatibilitätsebene 140 Adaptive Joins wählen je nach tatsächlichen Eingabezeilen während der Laufzeit dynamisch einen Jointyp aus.
Approximate Count Distinct Ja Stellt die geschätzte Abfrageverarbeitung für Big Data-Szenarios mit dem Vorteil einer hohen Leistung und einem niedrigen Speicherbedarf bereit.
Batchmodus bei Rowstore Ja, beginnend mit Datenbankkompatibilitätsebene 150 Stellt den Batchmodus für CPU-gebundene relationale Data Warehouse-Workloads bereit, ohne Columnstore-Indizes zu benötigen.
Verschachtelte Ausführung Ja, beginnend mit Datenbankkompatibilitätsebene 140 Verwendet die tatsächliche Kardinalität der Tabellenwertfunktion mit mehreren Anweisungen, die bei der ersten Kompilierung aufgetreten ist, anstatt einer festgelegten Schätzung.
Feedback zur Speichererteilung (Batchmodus) Ja, beginnend mit Datenbankkompatibilitätsebene 140 Wenn es für eine Abfrage im Batchmodus Operationen gibt, die sich auf den Datenträger auswirken, wird für anschließende Ausführungen mehr Speicher hinzugefügt. Wenn eine Abfrage 50 % des Speichers ausgibt, der ihm zugewiesen ist > , verringern Sie die Speicherzuteilungsgröße für aufeinander folgende Ausführungen.
Feedback zum Speicher gewähren (Zeilenmodus) Ja, beginnend mit der Datenbankkompatibilitätsebene 150 Wenn es für eine Abfrage im Zeilenmodus Operationen gibt, die sich auf den Datenträger auswirken, wird für anschließende Ausführungen mehr Speicher hinzugefügt. Wenn eine Abfrage 50 % des Speichers ausgibt, der ihm zugewiesen ist > , verringern Sie die Speicherzuteilungsgröße für aufeinander folgende Ausführungen.
Feedback zur Speicherzuteilung (Persistenz und Per persistenz) Ja, in SQL Server 2019 (15.x) eingeführt, gilt jedoch für die Datenbankkompatibilitätsebene 140 und höher Behebt vorhandene Einschränkungen des Feedbacks zur Speicherzuweisung auf nicht intrusive Weise.
Inlining benutzerdefinierter Skalarfunktionen Ja, beginnend mit der Datenbankkompatibilitätsebene 150 Benutzerdefinierte Skalarfunktionen werden in äquivalente relationale Ausdrücke transformiert, für die „Inlining“ in die aufrufende Abfrage ausgeführt wird, was häufig zu erheblichen Leistungssteigerungen führt.
Verzögerte Kompilierung von Tabellenvariablen Ja, beginnend mit der Datenbankkompatibilitätsebene 150 Verwendet die tatsächliche Kardinalität der Tabellenvariable, die bei der ersten Kompilierung aufgetreten ist, anstatt einer festgelegten Schätzung.

IQP-Features für SQL Server 2017 (14.x)

IQP-Feature Unterstützt in SQL Server 2017 (14.x) Beschreibung
Adaptive Joins (Batchmodus) Ja, ab SQL Server 2017 (14.x) mit Datenbankkompatibilitätsstufe 140 Adaptive Joins wählen je nach tatsächlichen Eingabezeilen während der Laufzeit dynamisch einen Jointyp aus.
Approximate Count Distinct Ja Stellt die geschätzte Abfrageverarbeitung für Big Data-Szenarios mit dem Vorteil einer hohen Leistung und einem niedrigen Speicherbedarf bereit.
Verschachtelte Ausführung Ja, beginnend mit datenbankkompatibilitätsstufe 140 Verwendet die tatsächliche Kardinalität der Tabellenwertfunktion mit mehreren Anweisungen, die bei der ersten Kompilierung aufgetreten ist, anstatt einer festgelegten Schätzung.
Feedback zur Speicherzuteilung (Batchmodus) Ja, beginnend mit datenbankkompatibilitätsstufe 140 Wenn es für eine Abfrage im Batchmodus Operationen gibt, die sich auf den Datenträger auswirken, wird für anschließende Ausführungen mehr Speicher hinzugefügt. Wenn eine Abfrage 50 % des Speichers ausgibt, der ihm zugewiesen ist > , verringern Sie die Speicherzuteilungsgröße für aufeinander folgende Ausführungen.
[Memory grant feedback (Percentile und Per persistenz) Ja, in SQL Server 2019 (15.x) eingeführt, gilt jedoch für die Datenbankkompatibilitätsebene 140 und höher Behebt vorhandene Einschränkungen des Feedbacks zur Speicherzuweisung auf nicht intrusive Weise.

Ausführliche Informationen zu allen IQP-Features, einschließlich Versionshinweisen und ausführlicheren Beschreibungen, finden Sie unter Details zur intelligenten Abfrageverarbeitung (IQP).

Weitere Informationen

Nächste Schritte