Intelligente Abfrageverarbeitung in SQL-Datenbanken
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance SQL-Datenbank in Microsoft Fabric
Die Featurefamilie „Intelligente Abfrageverarbeitung“ (Intelligent Query Processing, IQP) umfasst Features mit weitreichenden Auswirkungen, die die Leistung vorhandener Workloads mit minimalem Implementierungsaufwand verbessern. Aus der folgenden Grafik geht die Familie von IQP-Features und ihre erstmalige Einführung für SQL Server hervor. Alle IQP-Features sind in Azure SQL Managed Instance und Azure SQL-Datenbank verfügbar. Einige Features hängen vom Datenbank-Kompatibilitätsgrad ab.
In diesem Video erhalten Sie einen Überblick über die intelligente Abfrageverarbeitung:
Demos und Beispielcode von Features für die intelligente Abfrageverarbeitung (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. Zum 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 unter Details zu den Features für die intelligente Abfrageverarbeitung (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, ab Datenbank-Kompatibilitätsgrad 140 | Ja, ab SQL Server 2017 (14.x) mit Datenbank-Kompatibilitätsgrad 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. |
Angenähertes Perzentil | Ja, ab Datenbank-Kompatibilitätsgrad 110 | Ja, ab SQL Server 2022 (16.x) mit Kompatibilitätsgrad 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, ab Datenbank-Kompatibilitätsgrad 150 | Ja, ab SQL Server 2019 (15.x) mit Kompatibilitätsgrad 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) | Ja, ab Datenbank-Kompatibilitätsgrad 160 | Ja, ab SQL Server 2022 (16.x) mit Kompatibilitätsgrad 160 | Automatische Anpassung von Kardinalitätsschätzungen für wiederholte Abfragen zum Optimieren von Workloads, 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. |
DOP-Feedback (Grad an Parallelität) | Ja, in der Vorschau, ab Datenbank-Kompatibilitätsgrad 160 | Ja, ab SQL Server 2022 (16.x) mit Kompatibilitätsgrad 160 | Automatische Anpassung des Parallelitätsgrads für wiederholte Abfragen zur Optimierung von Workloads, bei denen ineffiziente Parallelität zu Leistungsproblemen führen kann. Erfordert Abfragespeicher, um aktiviert zu werden. |
Verschachtelte Ausführung | Ja, ab Datenbank-Kompatibilitätsgrad 140 | Ja, ab SQL Server 2017 (14.x) mit Datenbank-Kompatibilitätsgrad 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 Speicherzuweisung (Batchmodus) | Ja, ab Datenbank-Kompatibilitätsgrad 140 | Ja, ab SQL Server 2017 (14.x) mit Datenbank-Kompatibilitätsgrad 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 unnötigerweise > 50 % des zugewiesenen Speichers belegt, wird die Speicherzuweisungsgröße für anschließende Ausführungen reduziert. |
Feedback zur Speicherzuweisung (Zeilenmodus) | Ja, ab Datenbank-Kompatibilitätsgrad 150 | Ja, ab SQL Server 2019 (15.x) mit Datenbank-Kompatibilitätsgrad 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 unnötigerweise > 50 % des zugewiesenen Speichers belegt, wird die Speicherzuweisungsgröße für anschließende Ausführungen reduziert. |
Feedback zur Speicherzuweisung (Quantil) | Ja, für alle Datenbanken aktiviert | Ja, ab SQL Server 2022 (16.x)) mit Datenbank-Kompatibilitätsgrad 140 | Behebt vorhandene Einschränkungen des Feedbacks zur Speicherzuweisung auf nicht-intrusive Weise durch Einbeziehung der früheren Abfrageausführung zum Verfeinern des Feedbacks. |
Persistenz des Feedbacks zur Speicherzuweisung | Ja, für alle Datenbanken aktiviert | Ja, ab SQL Server 2022 (16.x)) mit Datenbank-Kompatibilitätsgrad 140 | Bietet neue Funktionen für die Persistenz des Feedbacks zur Speicherzuweisung. Erfordert, dass der Abfragespeicher für die Datenbank aktiviert ist und sich im Modus READ_WRITE befindet. |
CE-Feedbackpersistenz | Ja, ab Datenbank-Kompatibilitätsgrad 160 | Ja, ab SQL Server 2022 (16.x)) mit Datenbank-Kompatibilitätsgrad 160 | Erfordert, dass der Abfragespeicher für die Datenbank aktiviert ist und sich im Modus READ_WRITE befindet. |
DOP-Feedbackpersistenz | Ja, in der Vorschau, ab Datenbank-Kompatibilitätsgrad 160 | Ja, ab SQL Server 2022 (16.x)) mit Datenbank-Kompatibilitätsgrad 160 | Erfordert, dass der Abfragespeicher für die Datenbank aktiviert ist und sich im Modus READ_WRITE befindet. |
Erzwingen des optimierten Plans | Ja | Ja, ab 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, ab Datenbank-Kompatibilitätsgrad 150 | Ja, ab SQL Server 2019 (15.x) mit Datenbank-Kompatibilitätsgrad 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, ab Datenbank-Kompatibilitätsgrad 160 | Ja, ab SQL Server 2022 (16.x) mit Datenbank-Kompatibilitätsgrad 160 | Die Optimierung des Parameterempfindlichkeitsplans wurde für Szenarien entwickelt, in denen ein einzelner zwischengespeicherter Plan für eine parametrisierte Abfrage nicht für alle möglichen eingehenden Parameterwerte optimal ist, z. B. bei uneinheitliche Datenverteilungen. |
Verzögerte Kompilierung von Tabellenvariablen | Ja, ab Datenbank-Kompatibilitätsgrad 150 | Ja, ab SQL Server 2019 (15.x) mit Datenbank-Kompatibilitätsgrad 150 | Verwendet die tatsächliche Kardinalität der Tabellenvariable, die bei der ersten Kompilierung aufgetreten ist, anstatt einer festgelegten Schätzung. |
IQP-Feature für Azure SQL Managed Instance
IQP-Feature | Unterstützt in Azure SQL Managed Instance | Beschreibung |
---|---|---|
Adaptive Joins (Batchmodus) | Ja, ab Datenbank-Kompatibilitätsgrad 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. |
Angenähertes Perzentil | Ja, ab Datenbank-Kompatibilitätsgrad 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, ab Datenbank-Kompatibilitätsgrad 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) | Ja, ab Datenbank-Kompatibilitätsgrad 160 | Automatische Anpassung von Kardinalitätsschätzungen für wiederholte Abfragen zum Optimieren von Workloads, 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. |
DOP-Feedback (Grad an Parallelität) | Ohne | Automatische Anpassung des Parallelitätsgrads für wiederholte Abfragen zur Optimierung von Workloads, bei denen ineffiziente Parallelität zu Leistungsproblemen führen kann. Erfordert Abfragespeicher, um aktiviert zu werden. |
Verschachtelte Ausführung | Ja, ab Datenbank-Kompatibilitätsgrad 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 Speicherzuweisung (Batchmodus) | Ja, ab Datenbank-Kompatibilitätsgrad 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 unnötigerweise > 50 % des zugewiesenen Speichers belegt, wird die Speicherzuweisungsgröße für anschließende Ausführungen reduziert. |
Feedback zur Speicherzuweisung (Zeilenmodus) | Ja, ab Datenbank-Kompatibilitätsgrad 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 unnötigerweise > 50 % des zugewiesenen Speichers belegt, wird die Speicherzuweisungsgröße für anschließende Ausführungen reduziert. |
Feedback zur Speicherzuweisung (Quantil) | Ohne | Behebt vorhandene Einschränkungen des Feedbacks zur Speicherzuweisung auf nicht-intrusive Weise durch Einbeziehung der früheren Abfrageausführung zum Verfeinern des Feedbacks. |
Persistenz des Feedbacks zu Speicherzuweisung, CE und DOP | Ja, ab Datenbank-Kompatibilitätsgrad 160 | Bietet neue Funktionen für die Persistenz des Feedbacks zur Speicherzuweisung. CE- und DOP-Feedback sind immer persistent. Erfordert, dass der Abfragespeicher für die Datenbank aktiviert ist und sich im Modus READ_WRITE befindet. |
Erzwingen des optimierten Plans | Ohne | Reduziert den Kompilierungsaufwand für wiederholte erzwungene Abfragen. Weitere Informationen finden Sie unter Optimierte Planerzwingung mit dem Abfragespeicher. |
Inlining benutzerdefinierter Skalarfunktionen | Ja, ab Datenbank-Kompatibilitätsgrad 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, ab Datenbank-Kompatibilitätsgrad 160 | Die Optimierung des Parameterempfindlichkeitsplans wurde für Szenarien entwickelt, in denen ein einzelner zwischengespeicherter Plan für eine parametrisierte Abfrage nicht für alle möglichen eingehenden Parameterwerte optimal ist, z. B. bei uneinheitliche Datenverteilungen. |
Verzögerte Kompilierung von Tabellenvariablen | Ja, ab Datenbank-Kompatibilitätsgrad 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 2019 (15.x)
IQP-Feature | Unterstützt in SQL Server 2019 (15.x) | Beschreibung |
---|---|---|
Adaptive Joins (Batchmodus) | Ja, ab SQL Server 2017 (14.x) mit Datenbank-Kompatibilitätsgrad 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, ab Datenbank-Kompatibilitätsgrad 150 | Stellt den Batchmodus für CPU-gebundene relationale Data Warehouse-Workloads bereit, ohne Columnstore-Indizes zu benötigen. |
Verschachtelte Ausführung | Ja, ab Datenbank-Kompatibilitätsgrad 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 Speicherzuweisung (Batchmodus) | Ja, ab Datenbank-Kompatibilitätsgrad 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 unnötigerweise > 50 % des zugewiesenen Speichers belegt, wird die Speicherzuweisungsgröße für anschließende Ausführungen reduziert. |
Feedback zur Speicherzuweisung (Zeilenmodus) | Ja, ab Datenbank-Kompatibilitätsgrad 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 unnötigerweise > 50 % des zugewiesenen Speichers belegt, wird die Speicherzuweisungsgröße für anschließende Ausführungen reduziert. |
Inlining benutzerdefinierter Skalarfunktionen | Ja, ab Datenbank-Kompatibilitätsgrad 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, ab Datenbank-Kompatibilitätsgrad 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 Datenbank-Kompatibilitätsgrad 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, ab Datenbank-Kompatibilitätsgrad 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 Speicherzuweisung (Batchmodus) | Ja, ab Datenbank-Kompatibilitätsgrad 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 unnötigerweise > 50 % des zugewiesenen Speichers belegt, wird die Speicherzuweisungsgröße für anschließende Ausführungen reduziert. |
Anforderung an den Abfragespeicher
Für mehrere der Features für die intelligente Abfrageverarbeitung muss der Abfragespeicher aktiviert werden, damit sie der Benutzerdatenbank zugute kommen. Informationen zum Aktivieren des Abfragespeichers finden Sie unter Aktivieren des Abfragespeichers.
IQP-Feature | Der Abfragespeicher muss aktiviert sein und sich im Modus READ_WRITE befinden |
---|---|
Adaptive Joins (Batchmodus) | No |
Approximate Count Distinct | No |
Angenähertes Perzentil | No |
Batchmodus bei Rowstore | No |
Feedback zur Kardinalitätsschätzung (CE) | Ja |
DOP-Feedback (Grad an Parallelität) | Ja |
Verschachtelte Ausführung | No |
Feedback zur Speicherzuweisung (Batchmodus) | No |
Feedback zur Speicherzuweisung (Zeilenmodus) | No |
Feedback zur Speicherzuweisung (Quantil- und Persistenzmodus) | Ja |
Erzwingen des optimierten Plans | Ja |
Inlining benutzerdefinierter Skalarfunktionen | No |
Optimierung des Parameterempfindlichkeitsplans | Nein, aber empfohlen |
Verzögerte Kompilierung von Tabellenvariablen | No |
Zugehöriger Inhalt
Ausführliche Informationen zu allen IQP-Features, einschließlich Versionshinweisen und ausführlicheren Beschreibungen, finden Sie unter Details zu den Features für die intelligente Abfrageverarbeitung (IQP).
- Joins (SQL Server)
- 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
- Feedback zur Speicherzuweisung
- Demo zur intelligenten Abfrageverarbeitung
- Reduktion konstanter Ausdrücke und Auswertung von Ausdrücken
- Demos zur intelligenten Abfrageverarbeitung auf GitHub
- Leistungscenter für SQL Server-Datenbank-Engine und Azure SQL-Datenbank
- Überwachen der Leistung mithilfe des Abfragespeichers
- Bewährte Methoden für die Überwachung von Workloads mit Abfragespeicher