Intelligente Abfrageverarbeitung in SQL-Datenbanken

Gilt für:SQL ServerAzure SQL-DatenbankAzure 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 werden die IQP-Features und deren erste Einführung für SQL Server beschrieben. Alle IQP-Features sind in azure SQL Managed Instance und Azure SQL Database verfügbar. Einige Features hängen von der Kompatibilitätsstufe der Datenbank ab.

A diagram of the Intelligent Query Processing family of features and when they were first introduced to SQL Server.

Schauen Sie sich dieses Video an, um eine Übersicht über die intelligente Abfrageverarbeitung zu erfahren:

Für Demos und Beispielcode für intelligente Abfrageverarbeitungsfeatures (IQP) auf GitHub besuchen Sie 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 = 160;

In der folgenden Tabelle sind Details zu allen Features der intelligenten Abfrageverarbeitung dargestellt, sowie deren jeweiligen Anforderungen für den Datenbank-Kompatibilitätsgrad. Ausführliche Informationen zu allen IQP-Features, einschließlich Versionshinweisen und ausführlicheren Beschreibungen, finden Sie in den Features intelligent query processing (IQP).

IQP-Features für Azure SQL-Datenbank und SQL Server 2022 (16.x)

IQP-Feature **Unterstützt in Azure SQL-Datenbank Unterstützt in SQL Server 2022 (16.x) Beschreibung
Adaptive Joins (Batchmodus) Ja, beginnend mit der 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.
Ungefähres Quantil Ja, beginnend mit der Datenbankkompatibilitätsebene 110 Ja, ab SQL Server 2022 (16.x) mit Kompatibilitätsebene 110 Berechnen Sie mithilfe von Aggregatfunktionen für angenäherte Perzentile schnell und mit annehmbaren rangbasierten Fehlergrenzen Perzentile für ein großes Dataset, um schnell Entscheidungen zu treffen.
Batchmodus bei Rowstore Ja, beginnend mit der Datenbankkompatibilitätsebene 150 Ja, ab 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.
Feedback zur Kardinalitätsschätzung (CE) Ohne Ja, ab SQL Server 2022 (16.x) mit Kompatibilitätsebene 160 Passt Kardinalitätsschätzungen für wiederholte Abfragen automatisch an, um Workloads 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.
Feedback zum Grad an Parallelität (DOP) Ja*, beginnend mit der Datenbankkompatibilitätsebene 160. Ja, ab SQL Server 2022 (16.x) mit Kompatibilitätsebene 160 Passt den Grad der Parallelität für wiederholte Abfragen automatisch an, um sie für Workloads zu optimieren, bei denen ineffiziente Parallelität zu Leistungsproblemen führen kann. Erfordert, dass der Abfragespeicher aktiviert ist.
Verschachtelte Ausführung Ja, beginnend mit der Datenbankkompatibilitätsebene 140 Ja, beginnend mit SQL Server 2017 (14.x) mit Datenbankkompatibilitätsebene 140 Verwendet die tatsächliche Kardinalität der mehrwertigen Tabellenfunktion, die bei der ersten Kompilierung anstelle einer festen Schätzwertfunktion aufgetreten ist.
Feedback zur Speichererteilung (Batchmodus) Ja, beginnend mit der 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 zugeordneten Speichers > verschwendet, verringern Sie die Größe der Speichererteilung für aufeinander folgende Ausführungen.
Feedback zur Speichererteilung (Zeilenmodus) Ja, beginnend mit der Datenbankkompatibilitätsebene 150 Ja, ab 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 zugeordneten Speichers > verschwendet, verringern Sie die Größe der Speichererteilung für aufeinander folgende Ausführungen.
Feedback zur Speichererteilung (Quantil) Ohne Ja, beginnend mit SQL Server 2022 (16.x)) mit Datenbankkompatibilitätsebene 140 Behebt vorhandene Einschränkungen des Feedbacks zur Speichererteilung auf eine nicht aufdringliche Weise, indem die frühere Abfrageausführung integriert wird, um Feedback zu verfeinern.
Feedback zur Speichererteilungspersistenz Ja, für alle Datenbanken aktiviert Ja, beginnend mit SQL Server 2022 (16.x)) mit Datenbankkompatibilitätsebene 140 Bietet neue Funktionen zum Beibehalten von Feedback zur Speichererteilung. Erfordert, dass der Abfragespeicher für die Datenbank und im READ_WRITE Modus aktiviert ist.
CE- und DOP-Feedbackpersistenz Ohne Ja, beginnend mit SQL Server 2022 (16.x)) mit Datenbankkompatibilitätsebene 140 Erfordert, dass der Abfragespeicher für die Datenbank und im READ_WRITE Modus aktiviert ist.
Optimierte Planzwingung Ohne Ja, beginnend mit SQL Server 2022 (16.x)). Reduziert den Kompilierungsaufwand für wiederholte erzwungene Abfragen. Weitere Informationen finden Sie unter Optimierte Planerzwingung mit dem Abfragespeicher.
Inlining benutzerdefinierter Skalarfunktionen Ja, beginnend mit der Datenbankkompatibilitätsebene 150 Ja, ab 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 Ohne Ja, (ab SQL Server 2022 (16.x)) mit Datenbankkompatibilitätsebene 160 Die Optimierung des Parameterempfindlichkeitsplans 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 der Datenbankkompatibilitätsebene 150 Ja, ab SQL Server 2019 (15.x) mit Datenbankkompatibilitätsebene 150 Verwendet die tatsächliche Kardinalität der Tabellenvariable, die bei der ersten Kompilierung aufgetreten ist, anstelle einer festen Vermutung.

IQP-Features für verwaltete Azure SQL-Instanz

IQP-Feature Unterstützt in azure SQL Managed Instance Beschreibung
Adaptive Joins (Batchmodus) Ja, beginnend mit der 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.
Ungefähres Quantil Ja, beginnend mit der Datenbankkompatibilitätsebene 110 Berechnen Sie mithilfe von Aggregatfunktionen für angenäherte Perzentile schnell und mit annehmbaren rangbasierten Fehlergrenzen Perzentile für ein großes Dataset, um schnell Entscheidungen zu treffen.
Batchmodus bei Rowstore Ja, beginnend mit der Datenbankkompatibilitätsebene 150 Stellt den Batchmodus für CPU-gebundene relationale Data Warehouse-Workloads bereit, ohne Columnstore-Indizes zu benötigen.
Feedback zur Kardinalitätsschätzung (CE) Ohne Passt Kardinalitätsschätzungen für wiederholte Abfragen automatisch an, um Workloads 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.
Feedback zum Grad an Parallelität (DOP) Ja, beginnend mit der Datenbankkompatibilitätsebene 160. Passt den Grad der Parallelität für wiederholte Abfragen automatisch an, um sie für Workloads zu optimieren, bei denen ineffiziente Parallelität zu Leistungsproblemen führen kann. Erfordert, dass der Abfragespeicher aktiviert ist.
Verschachtelte Ausführung Ja, beginnend mit der Datenbankkompatibilitätsebene 140 Verwendet die tatsächliche Kardinalität der mehrwertigen Tabellenfunktion, die bei der ersten Kompilierung anstelle einer festen Schätzwertfunktion aufgetreten ist.
Feedback zur Speichererteilung (Batchmodus) Ja, beginnend mit der 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 zugeordneten Speichers > verschwendet, verringern Sie die Größe der Speichererteilung für aufeinander folgende Ausführungen.
Feedback zur Speichererteilung (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 zugeordneten Speichers > verschwendet, verringern Sie die Größe der Speichererteilung für aufeinander folgende Ausführungen.
Feedback zur Speichererteilung (Quantil) Ohne Behebt vorhandene Einschränkungen des Feedbacks zur Speichererteilung auf eine nicht aufdringliche Weise, indem die frühere Abfrageausführung integriert wird, um Feedback zu verfeinern.
Speichererteilung, CE und DOP-Feedbackpersistenz Ohne Bietet neue Funktionen zum Beibehalten von Feedback zur Speichererteilung. CE- und DOP-Feedback werden immer beibehalten. Erfordert, dass der Abfragespeicher für die Datenbank und im READ_WRITE Modus aktiviert ist.
Optimierte Planzwingung Ohne Reduziert den Kompilierungsaufwand für wiederholte erzwungene Abfragen. Weitere Informationen finden Sie unter Optimierte Planerzwingung mit dem Abfragespeicher.
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.
Optimierung des Parameterempfindlichkeitsplans Ohne Die Optimierung des Parameterempfindlichkeitsplans 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 der Datenbankkompatibilitätsebene 150 Verwendet die tatsächliche Kardinalität der Tabellenvariable, die bei der ersten Kompilierung aufgetreten ist, anstelle einer festen Vermutung.

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 der 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 der 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 der 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 zugeordneten Speichers > verschwendet, verringern Sie die Größe der Speichererteilung für aufeinander folgende Ausführungen.
Feedback zur Speichererteilung (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 zugeordneten Speichers > verschwendet, verringern Sie die Größe der Speichererteilung für aufeinander folgende Ausführungen.
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, 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.
Verschachtelte Ausführung Ja, beginnend mit der 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 der 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 zugeordneten Speichers > verschwendet, verringern Sie die Größe der Speichererteilung für aufeinander folgende Ausführungen.

Anforderung des Abfragespeichers

Mehrere der Intelligenten Abfrageverarbeitungsfeatures erfordern, dass der Abfragespeicher aktiviert ist, um die Benutzerdatenbank nutzen zu können. Informationen zum Aktivieren des Abfragespeichers finden Sie unter "Aktivieren des Abfragespeichers".

IQP-Feature Erfordert, dass der Abfragespeicher aktiviert und READ_WRITE
Adaptive Joins (Batchmodus) Nein
Approximate Count Distinct Nein
Ungefähres Quantil Nein
Batchmodus bei Rowstore Nein
Feedback zur Kardinalitätsschätzung (CE) Ja
Feedback zum Grad an Parallelität (DOP) Ja
Verschachtelte Ausführung Nein
Feedback zur Speichererteilung (Batchmodus) Teilweise
Feedback zur Speichererteilung (Zeilenmodus) Teilweise
Feedback zur Speichererteilung (Quantil) Ja
Speichererteilung, CE und DOP-Feedbackpersistenz Nein
Optimierte Planzwingung Ja
Inlining benutzerdefinierter Skalarfunktionen Nein
Optimierung des Parameterempfindlichkeitsplans Nein, aber empfohlen
Verzögerte Kompilierung von Tabellenvariablen Nein

Siehe auch

Ausführliche Informationen zu allen IQP-Features, einschließlich Versionshinweisen und ausführlicheren Beschreibungen, finden Sie in den Features intelligent query processing (IQP).

Nächste Schritte