Teilen über


Feedback zur Speicherzuweisung

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

Manchmal wird eine Abfrage mit einer zu großen oder zu kleinen Speicherzuweisung ausgeführt. Wenn die Speicherzuweisung zu groß ist, wird die Parallelität auf dem Server unterdrückt. Wenn sie zu klein ist, kann ein Überlauf auf einen Datenträger erfolgen, was ein kostspieliger Vorgang ist. Das Feedback zur Speicherzuweisung versucht, sich an den Speicherbedarf einer vorherigen Ausführung zu erinnern (mit QUANTIL-Feedback, mehreren früheren Ausführungen). Ausgehend von diesen Abfrageinformationen aus der Vergangenheit passt das Feedback zur Speicherzuweisung die Zuweisung an die Abfrage für nachfolgende Ausführungen entsprechend an.

Dieses Feature wurde in drei Wellen veröffentlicht. Feedback zur Speicherzuweisung im Batchmodus, gefolgt vom Feedback zur Speicherzuweisung im Zeilenmodus, und SQL Server 2022 (16.x) führte die Persistenz des Feedbacks zur Speicherzuweisung auf dem Datenträger über den Abfragespeicher und einen als QUANTIL-Zuweisung bezeichneten verbesserten Algorithmus ein.

Hinweis

Weitere Abfragefeedback-Features finden Sie unter Feedback zur Kardinalitätsschätzung (CE) und Feedback zum Grad der Parallelität (DOP).

Feedback zur Speicherzuweisung im Batchmodus

Gilt für: SQL Server (ab SQL Server 2017 (14.x)), Azure SQL-Datenbank und Azure SQL Managed Instance (ab Datenbank-Kompatibilitätsgrad 140)

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 der zugewiesenen bzw. übergelaufenen MB Speicher mit starken Überläufen.

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 der zugewiesenen bzw. übergelaufenen MB Speicher ohne Überläufe.

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.

Bei einer Bedingung mit zu geringen Speicherzuweisungen, die bei Batchmodusoperatoren zu einem Überlauf auf einen Datenträger führen, löst das Feedback zur Speicherzuweisung eine Neuberechnung der Speicherzuweisung aus. Überlaufereignisse werden dem Feedback zur Speicherzuweisung gemeldet und können über das erweiterte Ereignis spilling_report_to_memory_grant_feedback zum Vorschein gebracht werden. Dieses Ereignis gibt die Knoten-ID aus dem Plan und der Größe der übergelaufenen Daten dieses Knotens zurück.

Die angepasste Speicherzuweisung wird im aktuellen Plan (nach der Ausführung) über die Eigenschaft GrantedMemory angezeigt.

Sie können diese Eigenschaft im Stammoperator des grafischen Showplans oder in der Showplan-XML-Ausgabe 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

Verschiedene Parameterwerte können auch unterschiedliche Abfragepläne erfordern, um optimale Ergebnisse zu bieten. 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. Das Feature für Feedback zur Speicherzuweisung wird nach mehreren wiederholten Abfrageausführungen deaktiviert. Dies können Sie beobachten, indem Sie das erweiterte Ereignis memory_grant_feedback_loop_disabled überwachen. Dieser Zustand wird mit dem Persistenz- und QUANTIL-Modus für das Feedback zur Speicherzuweisung abgemildert, der in SQL Server 2022 (16.x) eingeführt wurde. Für das Persistenzfeature des Feedbacks zur Speicherzuweisung muss der Abfragespeicher in der Datenbank aktiviert und auf den Modus „Lese-/Schreibzugriff“ festgelegt sein.

Weitere Informationen zur Parameterermittlung und -empfindlichkeit finden Sie im Leitfaden zur Architektur der Abfrageverarbeitung.

Caching des Feedbacks zur Speicherzuweisung

Das Feedback kann für eine einzelne Ausführung in einem zwischengespeicherten Plan gespeichert werden. Allerdings sind es aufeinanderfolgende Ausführungen dieser Anweisung, die von Anpassungen des Feedbacks zur Speicherzuweisung 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 nicht im Abfragespeicher erfasst.

Das Feedback wird nicht übernommen, wenn der Plan aus dem Cache entfernt wird. Das Feedback geht ebenso verloren, wenn es zu einem Failover kommt. Eine Anweisung mit OPTION (RECOMPILE) erstellt einen neuen Plan und speichert diesen nicht zwischen. Da er nicht zwischengespeichert wird, wird auch kein Feedback zur Speicherzuweisung erzeugt und für diese Kompilierung und Ausführung auch nicht gespeichert. Wenn allerdings eine äquivalente Anweisung (d. h. eine Anweisung mit dem gleichen Abfragehash), die nichtOPTION (RECOMPILE) verwendet hat, zwischengespeichert und dann erneut ausgeführt wird, können die zweite Ausführung und später folgende Ausführungen vom Feedback zur Speicherzuweisung profitieren.

Nachverfolgen der Aktivität des Feedbacks zur Speicherzuweisung

Mithilfe des erweiterten Ereignisses memory_grant_updated_by_feedback können Sie Feedbackereignisse zur Speicherzuweisung 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 Speicherzuweisung im Batchmodus ohne Änderung des Kompatibilitätsgrads

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

-- 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.

Um das Feedback zur Speicherzuweisung im Batchmodus für alle Abfrageausführungen, die aus der Datenbank stammen, wieder zu aktivieren, führen Sie die folgenden SQL-Anweisungen im Kontext der betroffenen Datenbank aus:

-- 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. Zum 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 datenbankweit gültigen Konfiguration oder einer Ablaufverfolgungsflageinstellung.

Feedback zur Speicherzuweisung im Zeilenmodus

Gilt für: SQL Server (ab SQL Server 2019 (15.x)), Azure SQL-Datenbank und Azure SQL Managed Instance (ab Datenbank-Kompatibilitätsgrad 150)

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.

Um Feedback zur Speicherzuweisung im Zeilenmodus in Azure SQL-Datenbank zu aktivieren, aktivieren Sie den Datenbank-Kompatibilitätsgrad 150 oder höher für die Datenbank, mit der Sie beim Ausführen der Abfrage verbunden sind.

Beispiel:

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

Wie beim Feedback zur Speicherzuweisung im Batchmodus ist die Aktivität für das Feedback zur Speicherzuweisung im Zeilenmodus über das XEvent memory_grant_updated_by_feedback sichtbar. Wir führen zudem zwei neue Attribute im Abfrageausführungsplan ein, um einen besseren Einblick in den aktuellen Status eines Feedbackvorgangs zur Speicherzuweisung sowohl für den Zeilen- als auch für den Batchmodus zu ermöglichen.

Das Feedback zur Speicherzuweisung braucht den Abfragespeicher zwar nicht, aber für die in SQL Server 2022 (16.x) eingeführten Persistenzverbesserungen muss der Abfragespeicher für die Datenbank aktiviert sein und sich in einem Status „Lese-/Schreibzugriff“ befinden. Weitere Informationen zur Persistenz finden Sie weiter unten in diesem Artikel unter Feedback zur Speicherzuweisung im QUANTIL- und Persistenzmodus.

Die Aktivität des Feedbacks zur Speicherzuweisung im Zeilenmodus ist über das erweiterte Ereignis memory_grant_updated_by_feedback sichtbar.

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 zugewiesenen Speicher in Kilobyte (KB) 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 Speicherzuweisung passt den Speicher für die erste Kompilierung und die zugeordnete Ausführung nicht an.
No: Accurate Grant Wenn es keinen Überlauf auf dem Datenträger gibt und die Anweisung mindestens 50 % des zugewiesenen Speichers nutzt, wird Feedback zur Speicherzuweisung nicht ausgelöst.
No: Feedback disabled Wenn das Feedback zur Speicherzuweisung kontinuierlich ausgelöst wird und zwischen Speichererhöhung und -verkleinerung schwankt, deaktiviert die Datenbank-Engine das Feedback zur Speicherzuweisung für die Anweisung.
Yes: Adjusting Das Feedback zur Speicherzuweisung wurde angewendet und kann für die nächste Ausführung weiter angepasst werden.
Yes: QUANTIL Adjusting Das Feedback zur Speicherzuweisung wird mit dem QUANTIL-Zuweisungsalgorithmus angewendet, der den weiter zurückliegenden Verlauf als nur die letzte Ausführung berücksichtigt.
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)), Azure SQL-Datenbank, Azure SQL Managed Instance (derzeit nur Persistenz)

Dieses Feature wurde in SQL Server 2022 (16.x) eingeführt, jedoch steht diese Leistungsverbesserung für Abfragen zur Verfügung, die auf dem Datenbank-Kompatibilitätsgrad 140 (eingeführt in SQL Server 2017) oder höher, oder den QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n-Hinweis von 140 und höher ausgeführt werden, und wenn der Abfragespeicher für die Datenbank aktiviert ist und sich in einem Status „Lese-/Schreibzugriff“ befindet.

  • Das Feedback zur Speicherzuweisung im QUANTIL-Modus ist in SQL Server 2022 (16.x) standardmäßig aktiviert, hat jedoch keine Auswirkung, wenn der Abfragespeicher nicht aktiviert ist oder der Abfragespeicher sich nicht in einem Status „Lese-/Schreibzugriff“ befindet.
  • Persistenz des Feedbacks für Speicherzuweisung, CE und DOP ist in SQL Server 2022 (16.x) standardmäßig aktiviert, hat jedoch keine Auswirkung, wenn der Abfragespeicher nicht aktiviert ist oder der Abfragespeicher sich nicht in einem Status „Lese-/Schreibzugriff“ befindet.
  • Der QUANTIL- und Persistenzmodus für das Feedback zur Speicherzuweisung ist in Azure SQL-Datenbank verfügbar und ist für alle bestehenden und neuen Datenbanken standardmäßig aktiviert.
  • Der QUANTIL- und Persistenzmodus für das Feedback zur Speicherzuweisung ist in Azure SQL Managed Instance derzeit nicht verfügbar.

Es wird empfohlen, eine Leistungsbaseline für Ihre Arbeitsauslastung einzurichten, bevor das Feature für Ihre Datenbank aktiviert wird. Anhand der Baselinezahlen können Sie ermitteln, ob das Feature den beabsichtigten Vorteil bietet.

Feedback zur Speicherzuweisung (Memory Grant Feedback, MGF) ist ein vorhandenes Feature, das die Größe des Arbeitsspeichers anpasst, der basierend auf der vorherigen Leistung für eine Abfrage zugewiesen wird. 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 Zuweisungsinformation mit den anderen Abfrageinformationen im Abfragespeicher beizubehalten, sodass die Vorteile über das Entfernen von Cachedaten hinaus bestehen bleiben. 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 eine parametrisierte Abfrage oder Workload also bei jeder Ausführung stark variierende Speicherzuweisungsgrößen erfordert, sind die letzten Zuweisungsinformationen möglicherweise ungenau. Sie könnten außerhalb der tatsächlichen Anforderungen der ausgeführten Abfrage liegen. Das Feedback zur Speicherzuweisung in diesem Szenario ist nicht hilfreich für die Leistung, da wir den Arbeitsspeicher immer basierend auf dem zuletzt verwendeten Zuweisungswert anpassen. Die nächste Abbildung zeigt das mit dem Feedback zur Speicherzuweisung ohne QUANTIL- und Persistenzmodus mögliche Verhalten.

Graph des zugewiesenen bzw. tatsächlich benötigten Speicherverhaltens bei Feedback zur Speicherzuweisung ohne QUANTIL- und Persistenzmodus.

Wie Sie sehen können, führt die Schwankung zwischen dem tatsächlich benötigten und zugewiesenen Arbeitsspeicher in diesem ungewöhnlichen, aber möglichen Abfrageverhalten zu verschwendetem und unzureichendem Arbeitsspeicher, wenn die Abfrageausführung selbst im Hinblick auf die Arbeitsspeichermenge unterschiedlich ist. In diesem Szenario deaktiviert sich das Feedback zur Speicherzuweisung selbst, weil es erkennt, dass es mehr schadet als nützt.

Mit der perzentilbasierten Berechnung anhand des jüngsten Verlaufs der Abfrage und nicht nur der letzten Ausführung können wir die Zuweisungsgrößenwerte basierend auf dem Ausführungsverlauf glätten und eine Optimierung für minimale Überläufe anstreben. Beispielsweise wäre bei der gleichen wechselnden Workload das folgende Verhalten der Speicherzuweisung festzustellen:

Graph des zugewiesenen bzw. tatsächlich benötigten Speicherverhaltens bei Feedback zur Speicherzuweisung mit QUANTIL- und Persistenzmodus.

Der Abfrageoptimierer verwendet ein hohes Perzentil der vergangenen Größenanforderungen an die Speicherzuweisung für Ausführungen des zwischengespeicherten Plans, um die Größe der Speicherzuweisung anhand persistenter Daten im Abfragespeicher zu berechnen. Die QUANTIL-Anpassung, die die Speicherzuweisungsanpassungen vornimmt, basiert auf dem jüngsten Verlauf der Ausführungen. Im Laufe der Zeit verringert die gegebene Speicherzuweisung Überläufe und verschwendeten Speicher.

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

Aktivieren und Deaktivieren von Features für das Feedback zur Speicherzuweisung

Deaktivieren des Feedbacks zur Speicherzuweisung im Zeilenmodus ohne Änderung des Kompatibilitätsgrads

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. Um das Feedback zur Speicherzuweisung im Zeilenmodus für alle Abfrageausführungen, die aus der Datenbank stammen, zu deaktivieren, führen Sie die SQL-Anweisungen im Kontext der betroffenen Datenbank aus:

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. Zum 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 datenbankweit gültigen Konfiguration oder einer Ablaufverfolgungsflageinstellung.

Aktivieren von Persistenz und Perzentil für das Feedback zur Speicherzuweisung

Feedback im Persistenz- und Perzentilmodus sind in Azure SQL-Datenbank und SQL Server 2022 (16.x) standardmäßig aktiviert.

Verwenden Sie den Datenbank-Kompatibilitätsgrad 140 oder höher für die Datenbank, mit der Sie beim Ausführen der Abfrage verbunden sind. 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.

Deaktivieren des Perzentils

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

ALTER DATABASE SCOPED CONFIGURATION SET MEMORY_GRANT_FEEDBACK_PERCENTILE_GRANT = OFF;

Die Standardeinstellung für MEMORY_GRANT_FEEDBACK_PERCENTILE_GRANT ist ON.

Deaktivieren der Persistenz

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 zum Feedback zur Speicherzuweisung

Sie können Ihre aktuellen Einstellungen durch Abfragen von sys.database_scoped_configurations anzeigen.

Hinweis

Dieses Feature funktioniert nicht, wenn sowohl BATCH_MODE_MEMORY_GRANT_FEEDBACK als auch ROW_MODE_MEMORY_GRANT_FEEDBACK auf OFF festgelegt sind.

Da Feedbackdaten nun im Abfragespeicher beibehalten werden, erhöhen sich die Nutzungsanforderungen des Abfragespeichers.

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 Speicherzuweisung für sekundäre Replikate in Verfügbarkeitsgruppen replizierbar, wenn der Abfragespeicher für sekundäre Replikate aktiviert ist. Das Feedback zur Speicherzuweisung kann Feedback auf ein primäres Replikat und auf ein sekundäres Replikat unterschiedlich anwenden. Das Feedback zur Speicherzuweisung wird jedoch nicht für sekundäre Replikate beibehalten und beim Failover wird das Feedback zur Speicherzuweisung des alten primären Replikats auf das neue primäre Replikat angewendet. Jedes auf das sekundäre Replikat angewendete Feedback geht verloren, wenn es zum primären Replikat wird. Weitere Informationen finden Sie unter Abfragespeicher für sekundäre Replikate.