Intelligente Abfrageverarbeitung in SQL-Datenbanken
Gilt für:SQL Server
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 werden die IQP-Features und deren erste Einführung für SQL Server beschrieben. Alle IQP-Features sind in Azure SQL verwaltete Instanz und Azure SQL-Datenbank verfügbar. Einige Features hängen von der Kompatibilitätsstufe der Datenbank ab.
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 automatisch Karte inalitätsschätzungen für wiederholte Abfragen an, um Workloads zu optimieren, bei denen ineffiziente CE-Annahmen zu einer schlechten Abfrageleistung führen. 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 Abfragespeicher aktiviert werden. |
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 Karte inalität der mehrwertigen Tabellenfunktion mit mehreren Anweisungen, die bei der ersten Kompilierung anstelle eines festen Schätzwerts 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) | Ja, für alle Datenbanken aktiviert | 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 Abfragespeicher für die Datenbank und im READ_WRITE Modus aktiviert werden. |
CE- und DOP-Feedbackpersistenz | Ohne | Ja, beginnend mit SQL Server 2022 (16.x)) mit Datenbankkompatibilitätsebene 140 | Erfordert, dass Abfragespeicher für die Datenbank und im READ_WRITE Modus aktiviert werden. |
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 Karte inalität der Tabellenvariable, die bei der ersten Kompilierung gefunden wurde, anstelle einer festen Schätzwertung. |
- DOP-Feedback ist derzeit in Azure SQL-Datenbank als eingeschränkte Vorschau verfügbar. Weitere Informationen dazu und wie Sie sich für die Vorschauversion bewerben, finden Sie unter Ankündigung des DOP-Feedbacks in der eingeschränkten Vorschau.
IQP-Features für Azure SQL verwaltete Instanz
IQP-Feature | Unterstützt in Azure SQL verwaltete Instanz | 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 automatisch Karte inalitätsschätzungen für wiederholte Abfragen an, um Workloads zu optimieren, bei denen ineffiziente CE-Annahmen zu einer schlechten Abfrageleistung führen. 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 Abfragespeicher aktiviert werden. |
Verschachtelte Ausführung | Ja, beginnend mit der Datenbankkompatibilitätsebene 140 | Verwendet die tatsächliche Karte inalität der mehrwertigen Tabellenfunktion mit mehreren Anweisungen, die bei der ersten Kompilierung anstelle eines festen Schätzwerts 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 Abfragespeicher für die Datenbank und im READ_WRITE Modus aktiviert werden. |
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 Karte inalität der Tabellenvariable, die bei der ersten Kompilierung gefunden wurde, anstelle einer festen Schätzwertung. |
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. |
Abfragespeicher Anforderung
Mehrere der Intelligenten Abfrageverarbeitungsfeatures erfordern, dass die Abfragespeicher aktiviert werden, um die Benutzerdatenbank nutzen zu können. Informationen zum Aktivieren des Abfragespeicher finden Sie unter "Aktivieren des Abfragespeicher".
IQP-Feature | Erfordert, dass 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).
- Joins
- Ausführungsmodi
- Leitfaden zur Architektur der Abfrageverarbeitung
- Referenz zu logischen und physischen Showplanoperatoren
- Neues in SQL Server 2017
- Neuerungen in SQL Server 2019
- Neuerungen in SQL Server 2022
Nächste Schritte
- Feedback zur Abfrageverarbeitung
- Demo zur intelligenten Abfrageverarbeitung
- Reduktion konstanter Ausdrücke und Auswertung von Ausdrücken
- Intelligente Abfrageverarbeitungsdemos auf GitHub
- Leistungscenter für SQL Server-Datenbank-Engine und Azure SQL-Datenbank
- Überwachen der Leistung mithilfe des Abfragespeichers
- Bewährte Methoden für den Abfragespeicher