Feedback zur Speicherzuweisung

Gilt für: SQL Server 2017 (14.x) und höher, Azure SQL verwaltete Instanz, Azure SQL-Datenbank

Manchmal wird eine Abfrage mit einer Speichererteilung ausgeführt, die zu groß oder zu klein ist. Wenn die Speichererteilung zu groß ist, hemmen wir die Parallelität auf dem Server. Wenn es zu klein ist, können wir auf den Datenträger überlaufen, was ein kostspieliger Vorgang ist. Feedback zur Speichererteilung versucht, sich an die Speicheranforderungen einer vorherigen Ausführung zu erinnern (mit Quantilrückmeldung, mehreren früheren Ausführungen). Basierend auf diesen historischen Abfrageinformationen passt das Feedback zur Speichererteilung die der Abfrage zugewiesene Erteilung entsprechend für nachfolgende Ausführungen an.

Dieses Feature wurde in drei Wellen veröffentlicht. Feedback zur Speichererteilung im Batchmodus, gefolgt von Feedback zur Speichererteilung im Zeilenmodus, und SQL Server 2022 (16.x) führte speicherbezogenes Feedback zur Speichererhaltung mithilfe der Abfragespeicher und einen verbesserten Algorithmus ein, der als Quantilsgewährung bezeichnet wird.

Hinweis

Weitere Feedbackfeatures für Abfragen finden Sie unter Feedback zur Kardinalitätsschätzung (Ce) und zum Grad des Parallelismus (DOP).

Feedback zur Speicherzuweisung im Batchmodus

Gilt für: SQL Server (ab SQL Server 2017 (14.x)), Azure SQL-Datenbank

Der Ausführungsplan einer Abfrage enthält den für die Ausführung mindestens erforderlichen Speicherplatz und die ideale Speicherzuweisungsgröße, sodass alle Zeilen in den Speicher passen. Es gibt Leistungseinbußen, wenn die Speicherzuweisungsgrößen falsch sind. Zu große Zuweisungen führen zu verschwendetem Speicherplatz und geringerer Parallelität. Nicht ausreichende Speicherzuweisungen führen zu teuren Überläufen auf den Datenträger. Für wiederholte Workloads berechnet das Feedback zur Speicherzuweisung im Batchmodus den tatsächlich erforderlichen Speicherplatz für eine Abfrage neu und aktualisiert anschließend den Zuweisungswert des zwischengespeicherten Plans. Wenn eine identische Abfrageanweisung ausgeführt wird, verwendet die Abfrage die angepasste Speicherzuweisungsgröße. Dadurch werden zu hohe Speicherzuweisungen verringert, die die Parallelität beeinträchtigen, und Probleme bei zu gering geschätzten Speicherzuweisungen behoben, die teuren Überläufe auf den Datenträger verursachen.

Der folgende Graph veranschaulicht ein Beispiel für den Gebrauch des Feedbacks zur adaptiven Speicherzuweisung im Batchmodus. Die erste Ausführung der Abfrage hat aufgrund von einer hoher Zahl von Überlaufen 88 Sekunden in Anspruch genommen:

DECLARE @EndTime datetime = '2016-09-22 00:00:00.000';
DECLARE @StartTime datetime = '2016-09-15 00:00:00.000';

SELECT TOP 10 hash_unique_bigint_id
FROM dbo.TelemetryDS
WHERE Timestamp BETWEEN @StartTime AND @EndTime
GROUP BY hash_unique_bigint_id
ORDER BY MAX(max_elapsed_time_microsec) DESC;

Graph of granted versus spilled MBs of memory, indicating high spills.

Wenn das Feedback zur Speicherzuweisung aktiviert ist, dauert die zweite Ausführung 1 Sekunde (vorher 88 Sekunden), Überläufe treten nicht mehr auf, und die Zuweisung ist höher:

Graph of granted versus spilled MBs of memory, indicating no spills.

Größenanpassung des Feedbacks zur Speicherzuweisung im Batchmodus

Wenn bei einer Bedingung mit einer zu großen Speicherzuweisung der zugewiesene Speicher mehr als doppelt so groß ist als der tatsächlich verwendete Speicher, berechnet das Feedback zur Speicherzuweisung diese neu und aktualisiert den zwischengespeicherten Plan. Pläne mit Speicherzuweisungen unter 1 MB werden bei Überschreitungen nicht neu berechnet.

Für eine unzureichende Arbeitsspeicherzuteilungsbedingung, die zu einem Überlauf auf den Datenträger für Batchmodusoperatoren führt, löst das Feedback zur Speichererteilung eine Neuberechnung der Speichererteilung aus. Überlaufereignisse werden an das Feedback zur Speichererteilung gemeldet und können über das spilling_report_to_memory_grant_feedback erweiterte Ereignis angezeigt werden. Dieses Ereignis gibt die Knoten-ID aus dem Plan und der Größe der übergelaufenen Daten dieses Knotens zurück.

Die angepasste Speichererteilung wird über die GrantedMemory Eigenschaft im tatsächlichen Plan (nach der Ausführung) angezeigt.

Sie können diese Eigenschaft im Stammoperator des grafischen Showplans oder in der XML-Ausgabe des Showplans sehen:

<MemoryGrantInfo SerialRequiredMemory="1024" SerialDesiredMemory="10336" RequiredMemory="1024" DesiredMemory="10336" RequestedMemory="10336" GrantWaitTime="0" GrantedMemory="10336" MaxUsedMemory="9920" MaxQueryMemory="725864" />

Damit Ihre Workloads automatisch für diese Verbesserung in Frage kommen, aktivieren Sie den Kompatibilitätsgrad 140 für die Datenbank.

Beispiel:

ALTER DATABASE [WideWorldImportersDW] SET COMPATIBILITY_LEVEL = 140;

Feedback zur Speicherzuweisung und parameterempfindliche Szenarios

Für unterschiedliche Parameterwerte sind möglicherweise auch unterschiedliche Abfragepläne erforderlich, um Standard optimal zu verwenden. Diese Art von Abfrage wird als „parameterempfindlich“ bezeichnet.

Bei parameterempfindlichen Plänen deaktiviert sich das Feedback zur Speicherzuweisung in Abfragen selbst, wenn es nicht stabile Speicheranforderungen aufweist. Die Feedbackfunktion zur Speichererteilung wird nach mehreren wiederholten Ausführung der Abfrage deaktiviert, und dies kann durch Überwachen des memory_grant_feedback_loop_disabled erweiterten Ereignisses beobachtet werden. Diese Bedingung wird mit dem Persistenz- und Quantilmodus für das Feedback zur Speichererteilung abgemildert, das in SQL Server 2022 (16.x) eingeführt wurde. Das Persistenzfeature der Speichererteilungsfeedback erfordert, dass die Abfragespeicher in der Datenbank aktiviert und im Modus "Schreibzugriff" festgelegt werden.

Weitere Informationen zur Vertraulichkeit von Parametern und zur Parameterempfindlichkeit finden Sie im Handbuch zur Abfrageverarbeitungsarchitektur.

Caching des Feedbacks zur Speicherzuweisung

Das Feedback kann für eine einzelne Ausführung in einem zwischengespeicherten Plan gespeichert werden. Es ist jedoch die aufeinander folgende Ausführung dieser Anweisung, die von den Anpassungen der Speicherzuteilung profitieren. Diese Funktion wird bei wiederholten Ausführungen von Anweisungen angewendet. Das Feedback zur Speicherzuweisung ändert nur den zwischengespeicherten Plan. Vor SQL Server 2022 (16.x) wurden Änderungen im Abfragespeicher nicht erfasst.

Feedback wird nicht beibehalten, wenn der Plan aus dem Cache entfernt wird. Feedback geht auch verloren, wenn ein Failover vorhanden ist. Eine Anweisung, die OPTION (RECOMPILE) einen neuen Plan verwendet, erstellt und speichert ihn nicht zwischen. Da es nicht zwischengespeichert wird, wird kein Feedback zur Speichererteilung erzeugt und nicht für diese Kompilierung und Ausführung gespeichert. Wenn jedoch eine entsprechende Anweisung (d. h. mit demselben Abfragehash), die nicht verwendet OPTION (RECOMPILE) wurde, zwischengespeichert und dann erneut ausgeführt wurde, kann die zweite und spätere aufeinanderfolgende Ausführung von Feedback zur Speichererteilung profitieren.

Nachverfolgen der Feedbackaktivität zur Speichererteilung

Mithilfe des memory_grant_updated_by_feedback erweiterten Ereignisses können Sie Feedbackereignisse zur Speichererteilung nachverfolgen. Dieses Ereignis verfolgt den Verlauf der Ausführungsanzahl, die Zahl von Aktualisierungen des Plans durch das Feedback zur Speicherzuweisung und die optimale zusätzliche Speicherzuweisung vor der Anpassung und nach der Anpassung des zwischengespeicherten Plans durch das Feedback zur Speicherzuweisung.

Feedback zur Speicherzuweisung, Ressourcenkontrolle und Abfragehinweise

Der tatsächlich zugewiesene Speicher berücksichtigt die Abfragespeichereinschränkung, die von der Ressourcenkontrolle oder dem Abfragehinweis bestimmt wird.

Deaktivieren des Feedbacks zur Speichererteilung im Batchmodus, ohne die Kompatibilitätsstufe zu ändern

Das Feedback zur Speicherzuweisung kann im Datenbank- oder Anweisungsbereich deaktiviert werden, während der Datenbankkompatibilitätsgrad weiterhin bei 140 und höher bleibt. Führen Sie die folgenden SQL-Anweisungen im Kontext der entsprechenden Datenbank aus, um das Feedback zur Speichererteilung im Batchmodus zu deaktivieren, um Feedback für alle Abfrageausführungen zu erteilen, die aus der Datenbank stammen:

-- SQL Server 2017
ALTER DATABASE SCOPED CONFIGURATION SET DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK = ON;

-- Starting with SQL Server 2019, and in Azure SQL Database
ALTER DATABASE SCOPED CONFIGURATION SET BATCH_MODE_MEMORY_GRANT_FEEDBACK = OFF;

Ist diese Einstellung aktiviert, wird sie in sys.database_scoped_configurations als aktiviert aufgeführt.

Führen Sie die SQL-Anweisungen im Kontext der entsprechenden Datenbank aus, um das Feedback zur Speichererteilung im Batchmodus für alle Abfrageausführungen zu aktivieren, die aus der Datenbank stammen:

-- SQL Server 2017
ALTER DATABASE SCOPED CONFIGURATION SET DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK = OFF;

-- Azure SQL Database, SQL Server 2019 and higher
ALTER DATABASE SCOPED CONFIGURATION SET BATCH_MODE_MEMORY_GRANT_FEEDBACK = ON;

Sie können das Feedback zur Speicherzuweisung im Batchmodus auch für eine bestimmte Abfrage deaktivieren, indem Sie DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK als USE HINT-Abfragehinweis festlegen. Beispiel:

SELECT * FROM Person.Address
WHERE City = 'SEATTLE' AND PostalCode = 98104
OPTION (USE HINT ('DISABLE_BATCH_MODE_MEMORY_GRANT_FEEDBACK'));

Ein USE HINT-Abfragehinweis hat Vorrang vor einer Konfigurations- oder Ablaufverfolgungskennzeichnungseinstellung in der Datenbank.

Feedback zur Speicherzuweisung im Zeilenmodus

Gilt für: SQL Server (ab SQL Server 2019 (15.x)), Azure SQL-Datenbank

Das Feedback zur Speicherzuweisung im Zeilenmodus erweitert die Feedbackfunktion zur Speicherzuweisung im Batchmodus, indem die Größe der Speicherzuweisung sowohl für Batch- als auch für Zeilenmodusoperatoren angepasst wird.

Aktivieren Sie die Datenbankkompatibilitätsebene 150 oder höher für die Datenbank, mit der Sie bei der Ausführung der Abfrage verbunden sind, um das Feedback zur Speichererteilung im Zeilenmodus Azure SQL-Datenbank zu aktivieren.

Beispiel:

ALTER DATABASE [<database name>] SET COMPATIBILITY_LEVEL = 150;

Wie beim Feedback zur Batchmodus-Speichererteilung ist die Feedbackaktivität des Zeilenmodus für die Speichererteilung über das memory_grant_updated_by_feedback XEvent sichtbar. Außerdem führen wir zwei neue Abfrageausführungsplanattribute ein, um einen besseren Einblick in den aktuellen Zustand eines Speichererteilungsfeedbackvorgangs sowohl für den Zeilen- als auch für den Batchmodus zu erhalten.

Das Feedback zur Speichererteilung erfordert jedoch nicht die Abfragespeicher. Die in SQL Server 2022 (16.x) eingeführten Persistenzverbesserungen erfordern jedoch, dass die Abfragespeicher für die Datenbank und im Zustand "Lese-/Schreibzugriff" aktiviert werden müssen. Weitere Informationen zur Persistenz finden Sie weiter unten in diesem Artikel unter Perzentil und Persistenzmodus.

Die Feedbackaktivität des Zeilenmodus für die Speichererteilung wird über das memory_grant_updated_by_feedback erweiterte Ereignis angezeigt.

Beginnend mit dem Feedback zur Speicherzuweisung im Zeilenmodus werden zwei neue Abfrageplanattribute für tatsächliche Pläne nach der Ausführung angezeigt: IsMemoryGrantFeedbackAdjusted und LastRequestedMemory, die dem XML-Element MemoryGrantInfo für den Abfrageplan hinzugefügt werden.

  • Das LastRequestedMemory Attribut zeigt den gewährten Speicher in Kilobytes (KB) aus der vorherigen Abfrageausführung an.
  • Mit dem Attribut IsMemoryGrantFeedbackAdjusted können Sie den Feedbackzustand einer Speicherzuweisung für die Anweisung in einem tatsächlichen Abfrageausführungsplan überprüfen.

Folgende Werte werden in diesem Attribut angezeigt:

IsMemoryGrantFeedbackAdjusted Wert Beschreibung
No: First Execution Das Feedback zur Speichererteilung passt den Arbeitsspeicher für die erste Kompilierung und die zugehörige Ausführung nicht an.
No: Accurate Grant Wenn kein Überlauf auf den Datenträger vorhanden ist und die Anweisung mindestens 50 % des gewährten Arbeitsspeichers verwendet, wird das Feedback zur Speichererteilung nicht ausgelöst.
No: Feedback disabled Wenn das Feedback zur Speichererteilung kontinuierlich ausgelöst wird und zwischen Speichererhöhungs- und Speicherminderungsvorgängen schwankt, deaktiviert das Datenbankmodul das Feedback zur Speichererteilung für die Anweisung.
Yes: Adjusting Das Feedback zur Speichererteilung wurde angewendet und kann für die nächste Ausführung weiter angepasst werden.
Ja: Quantil anpassen Das Feedback zur Speichererteilung wird mithilfe des Quantilszuteilungsalgorithmus angewendet, der mehr Verlauf als nur die letzte Ausführung betrachtet.
Yes: Stable Das Feedback zur Speicherzuweisung wurde angewendet und der zugewiesene Speicher ist jetzt stabil. Das bedeutet: Der für die vorherige Ausführung zuletzt zugewiesene Speicher entspricht dem für die aktuelle Ausführung.

Feedback zur Speicherzuweisung im Perzentil- und Persistenzmodus

Gilt für: SQL Server (ab SQL Server 2022 (16.x)) und Azure SQL-Datenbank

Dieses Feature wurde in SQL Server 2022 (16.x) eingeführt, diese Leistungsverbesserung steht jedoch für Abfragen zur Verfügung, die in der Datenbankkompatibilitätsebene 140 (eingeführt in SQL Server 2017) oder höher ausgeführt werden, oder für Abfragen, die in SQL Server 2017 eingeführt wurden, oder für Abfragen, die in SQL Server 2017 eingeführt wurden, oder für QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n den Hinweis auf 140 und höher, und wenn Abfragespeicher für die Datenbank aktiviert ist und sich im Zustand "Lese-/Schreibzugriff" befindet.

  • Das Feedback zur Quantilspeichererteilung ist in SQL Server 2022 (16.x) standardmäßig aktiviert, hat jedoch keine Auswirkung, wenn Abfragespeicher nicht aktiviert ist oder Abfragespeicher sich nicht im Zustand "Lese-/Schreibzugriff" befindet.
  • Persistenz für Speichererteilung, CE- und DOP-Feedback ist in SQL Server 2022 (16.x) standardmäßig aktiviert, hat jedoch keine Auswirkung, wenn Abfragespeicher nicht aktiviert ist oder wenn Abfragespeicher sich nicht im Zustand "Lese-/Schreibzugriff" befindet.
  • Quantil und Persistenz für Das Feedback zur Speichererteilung ist in Azure SQL-Datenbank verfügbar und ist standardmäßig für alle Datenbanken, sowohl vorhanden als auch neu, aktiviert.
  • Quantil und Persistenz für Das Feedback zur Speichererteilung sind derzeit in Azure SQL verwaltete Instanz nicht verfügbar.

Es wird empfohlen, dass Sie eine Leistungsbasislinie für Ihre Workload haben, bevor das Feature für Ihre Datenbank aktiviert ist. Anhand der Basisplannummern können Sie ermitteln, ob Sie den gewünschten Nutzen aus dem Feature ziehen.

Das Feedback zur Speichererteilung (Memory Grant Feedback, MGF) ist ein vorhandenes Feature, das die Größe des für eine Abfrage zugewiesenen Speichers basierend auf der vorherigen Leistung anpasst. In den Anfangsphasen dieses Projekts wurde die Anpassung der Speicherzuweisung jedoch mit dem Plan im Cache gespeichert. Wenn ein Plan aus dem Cache entfernt wurde, musste der Feedbackprozess erneut beginnen. Dadurch wurde bei den ersten Ausführungen einer Abfrage nach dem Entfernen die Leistung beeinträchtigt. Die neue Lösung besteht darin, die Erteilungsinformationen mit den anderen Abfrageinformationen in der Abfragespeicher beizubehalten, sodass die Vorteile über Cacheräumungen hinweg dauern. Persistenz und Perzentil beheben vorhandene Einschränkungen des Feedback zur Speicherzuweisung auf nicht intrusive Weise.

Darüber hinaus wurde bei den Anpassungen der Zuweisungsgröße nur die zuletzt verwendete Zuweisung berücksichtigt. Wenn also eine parametrisierte Abfrage oder Arbeitsauslastung bei jeder Ausführung erhebliche unterschiedliche Speicherzuteilungsgrößen erfordert, könnten die neuesten Genehmigungsinformationen ungenau sein. Es könnte außerhalb des Schritts sein, wobei die tatsächlichen Anforderungen der Abfrage ausgeführt werden. Das Feedback zur Speichererteilung in diesem Szenario ist nicht hilfreich für die Leistung, da wir den Arbeitsspeicher immer basierend auf dem zuletzt verwendeten Grant-Wert anpassen. Die nächste Abbildung zeigt das Verhalten, das mit Feedback zur Speichererteilung ohne Quantil und Persistenzmodus möglich ist.

Graph of granted versus actual needed memory behavior in Memory Grant feedback without percentile and persistence mode memory grant feedback.

Wie Sie sehen können, führt die Schwingung zwischen dem tatsächlich benötigten und gewährten Arbeitsspeicher in diesem ungewöhnlichen, aber möglichen Abfrageverhalten zu verschwendetem und unzureichendem Arbeitsspeicher, wenn sich die Abfrageausführung selbst im Hinblick auf die Menge des Arbeitsspeichers abwechselt. In diesem Szenario deaktiviert sich das Feedback zur Speichererteilung selbst und erkennt, dass es mehr Schaden als gut tut.

Wenn Sie eine quantilbasierte Berechnung über den letzten Verlauf der Abfrage verwenden, anstatt einfach nur die letzte Ausführung auszuführen, können wir die Größenwerte für die Erteilung basierend auf dem verlauf der Ausführungsverwendung glätten und versuchen, die Minimierung von Überläufen zu optimieren. Beispielsweise würde die gleiche abwechselnde Arbeitsauslastung das folgende Verhalten der Speichererteilung sehen:

Graph of granted versus actual needed memory behavior in Memory Grant feedback with percentile and persistence mode memory grant feedback.

Der Abfrageoptimierer verwendet ein hohes Quantil der letzten Speicherzuteilungsanforderungen für Die Ausführung des zwischengespeicherten Plans zum Berechnen der Größe der Speichererteilung, wobei daten, die im Abfragespeicher gespeichert sind, verwendet werden. Die Quantilanpassung, die die Speicherzuteilungsanpassungen durchführt, basiert auf dem letzten Verlauf der Ausführungen. Im Laufe der Zeit reduziert die gewährte Speicherzuteilung Überlauf und verschwendeten Speicher.

Persistenz gilt auch für DOP-Feedback und CE-Feedback.

Aktivieren und Deaktivieren von Feedbackfeatures zur Speichererteilung

Deaktivieren des Feedbacks zur Speichererteilung im Zeilenmodus, ohne die Kompatibilitätsstufe zu ändern

Das Feedback zur Speicherzuweisung im Zeilenmodus kann im Datenbank- oder Anweisungsbereich deaktiviert werden, während der Datenbankkompatibilitätsgrad weiterhin bei 150 und höher bleibt. Führen Sie die SQL-Anweisungen im Kontext der entsprechenden Datenbank aus, um das Feedback zur Speichererteilung des Zeilenmodus für alle Abfrageausführungen zu deaktivieren:

ALTER DATABASE SCOPED CONFIGURATION SET ROW_MODE_MEMORY_GRANT_FEEDBACK = OFF;

Um das Feedback zur Speicherzuweisung im Zeilenmodus für alle Abfrageausführungen, die aus der Datenbank stammen, erneut zu aktivieren, führen Sie die folgende Anweisung im Kontext der betroffenen Datenbank aus:

ALTER DATABASE SCOPED CONFIGURATION SET ROW_MODE_MEMORY_GRANT_FEEDBACK = ON;

Sie können das Feedback zur Speicherzuweisung im Zeilenmodus auch für eine bestimmte Abfrage deaktivieren, indem Sie DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK als USE HINT-Abfragehinweis festlegen. Beispiel:

SELECT * FROM Person.Address
WHERE City = 'SEATTLE' AND PostalCode = 98104
OPTION (USE HINT ('DISABLE_ROW_MODE_MEMORY_GRANT_FEEDBACK'));

Ein USE HINT-Abfragehinweis hat Vorrang vor einer Konfigurations- oder Ablaufverfolgungskennzeichnungseinstellung in der Datenbank.

Aktivieren von Speichererteilungspersistenz und Quantil

Persistenz- und Quantilrückmeldung sind in Azure SQL-Datenbank und SQL Server 2022 (16.x) standardmäßig aktiviert.

Verwenden Sie die Datenbankkompatibilitätsebene 140 oder höher für die Datenbank, mit der Sie verbunden sind, wenn Sie die Abfrage ausführen. Sie können dies über ALTER DATABASE ändern:

ALTER DATABASE <DATABASE NAME> SET COMPATIBILITY LEVEL = 140; -- OR HIGHER

Der Abfragespeicher muss für jede Datenbank aktiviert werden, in der der Persistenzteil dieses Features verwendet wird.

Quantil deaktivieren

Um das Feedback-Quantil für alle Abfrageausführungen zu deaktivieren, die aus der Datenbank stammen, führen Sie Folgendes im Kontext der entsprechenden Datenbank aus:

ALTER DATABASE SCOPED CONFIGURATION SET MEMORY_GRANT_FEEDBACK_PERCENTILE_GRANT = OFF;

Die Standardeinstellung für MEMORY_GRANT_FEEDBACK_PERCENTILE_GRANT ist ON.

Persistenz deaktivieren

Um die Persistenz für das Feedback zur Speicherzuweisung für alle Abfrageausführungen, die von der Datenbank stammen, zu deaktivieren, gehen Sie folgendermaßen vor.

Führen Sie Folgendes im Kontext der entsprechenden Datenbank aus:

ALTER DATABASE SCOPED CONFIGURATION SET MEMORY_GRANT_FEEDBACK_PERSISTENCE = OFF;

Durch das Deaktivieren der Persistenz für das Feedback zur Speicherzuweisung wird auch vorhandenes gesammeltes Feedback entfernt.

Die Standardeinstellung für MEMORY_GRANT_FEEDBACK_PERSISTENCE ist ON.

Überlegungen zur Speichererteilung

Sie können Ihre aktuellen Einstellungen anzeigen, indem Sie sys.database_scoped_configurations abfragen.

Hinweis

Dieses Feature funktioniert nicht, wenn beides BATCH_MODE_MEMORY_GRANT_FEEDBACK festgelegt ist und ROW_MODE_MEMORY_GRANT_FEEDBACK auf OFF.

Da die Feedbackdaten nun im Abfragespeicher beibehalten werden, gibt es eine Zunahme der Abfragespeicher Nutzungsanforderungen.

Bei der perzentilbasierten Speicherzuweisung wird vorrangig auf die Verringerung von Überläufen geachtet. Da sie nicht mehr nur auf der letzten Ausführung, sondern auf der Beobachtung mehrerer vorheriger Ausführungen basiert, kann sich dadurch die Speichernutzung für schwankende Arbeitsauslastungen mit einer breiten Varianz in den Speicherzuweisungsanforderungen zwischen den Ausführungen erhöhen.

Ab SQL Server 2022 (16.x) ist das Feedback zur Speichererteilung für sekundäre Replikate in Verfügbarkeitsgruppen replizierbar, wenn Abfragespeicher für sekundäre Replikate aktiviert ist. Feedback zur Speichererteilung kann Feedback auf ein primäres Replikat und auf ein sekundäres Replikat unterschiedlich anwenden. Das Feedback zur Speichererteilung wird jedoch nicht für sekundäre Replikate beibehalten, und beim Failover wird das Feedback zur Speichererteilung aus dem alten primären Replikat auf das neue primäre Replikat angewendet. Jedes Feedback, das auf das sekundäre Replikat angewendet wird, wenn es zum primären Replikat wird, geht verloren. Weitere Informationen finden Sie unter Abfragespeicher für sekundäre Replikate.