Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: SQL Server 2025 (17.x) und höhere Versionen
Wenn Sie die Ressourcenverwaltung tempdb aktivieren, verbessern Sie die Zuverlässigkeit und vermeiden Ausfälle, indem Sie verhindern, dass ungebremste Abfragen oder Workloads einen großen Speicherplatz in tempdb beanspruchen.
Ab SQL Server 2025 (17.x) können Sie die Ressourcenkontrolle verwenden, um einen Grenzwert für die Gesamtmenge des tempdb von einer Workloadgruppe verbrauchten Speicherplatzes zu erzwingen. Eine Belastungsgruppe kann einer Anwendung, einem Benutzer, einer Gruppe von Benutzern usw. zugeordnet werden. Wenn eine Anforderung (eine Abfrage) versucht, das Limit zu überschreiten, wird sie vom Resource Governor mit einem eindeutigen Fehler abgebrochen, der anzeigt, dass die Begrenzung der Belastungsgruppe eingehalten wurde.
Tatsächlich können Sie den freigegebenen tempdb Speicherplatz unter verschiedenen Workloads partitionieren. Sie können beispielsweise einen höheren Grenzwert für eine Workloadgruppe festlegen, die von einer unternehmenskritischen Anwendung verwendet wird, und einen niedrigeren Grenzwert für die Workloadgruppe festlegen, die default von allen anderen Workloads verwendet wird.
Beispiele für eine schrittweise Konfiguration finden Sie unter Tutorial: Beispiele für die Konfiguration der Governance von Tempdb-Speicherressourcen.
Erste Schritte mit Ressourcenverwaltung
Die Ressourcenkontrolle bietet ein flexibles Framework, um unterschiedliche tempdb Platzbeschränkungen für verschiedene Anwendungen, Benutzer, Benutzergruppen usw. festzulegen. Sie können auch Grenzwerte basierend auf benutzerdefinierter Logik festlegen.
Wenn Sie neu im Umgang mit dem Ressourcengouverneur in SQL Server sind, sehen Sie sich Ressourcengouverneur an, um mehr über seine Konzepte und Fähigkeiten zu erfahren.
Für eine exemplarische Konfiguration des Ressourcen-Governors und bewährte Methoden, siehe Lernprogramm: Beispiele und bewährte Methoden zur Konfiguration des Ressourcen-Governors.
Festlegen von Grenzwerten für den tempdb-Speicherplatzverbrauch
Sie können den Speicherplatzverbrauch durch eine Workloadgruppe auf eine von zwei Arten einschränken tempdb :
Legen Sie einen festen Grenzwert mithilfe des
GROUP_MAX_TEMPDB_DATA_MBArguments fest.Der feste Grenzwert ist nützlich, wenn die Anforderungen an die Arbeitsauslastung
tempdbim Voraus bekannt sind oder sichtempdbdie Größe nicht ändert.Legen Sie mithilfe des Arguments einen
GROUP_MAX_TEMPDB_DATA_PERCENTfest.Der Prozentsatzgrenzwert ist nützlich, wenn Sie die maximale Größe von
tempdbim Laufe der Zeit ändern möchten, und Sie möchten, dass der für jede Workload-Gruppe verfügbare Speicherplatz proportional angepasst wird, ohne den Ressourcengovernor neu zu konfigurieren. Wenn Sie z. B. eine Azure-VM mit SQL Server skalieren und die maximaletempdbGröße erhöhen, steigt auch dertempdbfür jede Workloadgruppe verfügbare Speicherplatz mit einem Prozentgrenzwert.
Weitere Informationen zu den GROUP_MAX_TEMPDB_DATA_MB Und GROUP_MAX_TEMPDB_DATA_PERCENT Argumenten finden Sie unter CREATE WORKLOAD GROUP oder ALTER WORKLOAD GROUP.
Wenn sowohl feste als auch prozentspezifische Grenzwerte für dieselbe Workloadgruppe angegeben werden, hat der feste Grenzwert Vorrang vor dem Prozentgrenzwert.
Bei einer bestimmten SQL Server-Instanz können Sie eine Mischung aus Workloadgruppen mit festen Grenzwerten, Prozentgrenzwerten oder keinen Grenzwerten für tempdb den Speicherplatzverbrauch haben.
Prozentgrenzwertkonfiguration
Die Prozentgrenzwerte sind nur wirksam, wenn die tempdb Datendateikonfiguration die in der folgenden Tabelle zusammengefassten Anforderungen erfüllt:
| Konfiguration | BESCHREIBUNG | Tempdb-Maximalgröße (100 %) | Prozentwertbegrenzung in Kraft |
|---|---|---|---|
-
GROUP_MAX_TEMPDB_DATA_MB ist nicht festgelegt- Für alle Datendateien ist MAXSIZE nicht UNLIMITED- Für alle Datendateien, FILEGROWTH ist nicht Null |
tempdb Datendateien können automatisch bis zu ihrer maximalen Größe wachsen. |
Die Summe der MAXSIZE Werte für alle Datendateien |
Ja |
-
GROUP_MAX_TEMPDB_DATA_MB ist nicht festgelegt- Für alle Datendateien, MAXSIZE ist UNLIMITED- Für alle Datendateien ist FILEGROWTH gleich null |
tempdb Datendateien werden auf ihre beabsichtigten Größen vorkonfiguriert und können nicht weiter wachsen. |
Die Summe der SIZE Werte für alle Datendateien |
Ja |
| Alle anderen Konfigurationen | Nein |
Mit der folgenden Abfrage können Sie die aktuelle tempdb Konfiguration der Datendatei anzeigen:
SELECT file_id,
name,
size * 8. / 1024 AS size_mb,
IIF(max_size = -1, NULL, max_size * 8. / 1024) AS maxsize_mb,
IIF(is_percent_growth = 0, growth * 8. / 1024, NULL) AS filegrowth_mb,
IIF(is_percent_growth = 1, growth, NULL) AS filegrowth_percent
FROM sys.master_files
WHERE database_id = 2
AND
type_desc = 'ROWS';
Für eine bestimmte Datei im Resultset:
- Wenn die
maxsize_mb-SpalteNULList, dann istMAXSIZEUNLIMITED. - Wenn entweder
filegrowth_mboderfilegrowth_percentnull ist, istFILEGROWTHnull.
Wenn Sie die GROUP_MAX_TEMPDB_DATA_PERCENT festlegen und ausführen, die Datendateikonfiguration jedoch nicht den Anforderungen entspricht, wird die Anweisung erfolgreich abgeschlossen, und die Prozentgrenzwerte werden gespeichert, aber sie werden nicht erzwungen. In diesem Fall erhalten Sie Warnmeldung 10989, Schweregrad 10, GROUP_MAX_TEMPDB_DATA_PERCENT nicht wirksam ist, da tempdb-Konfigurationsanforderungen nicht erfüllt sind. Die Nachricht wird auch im Fehlerprotokoll protokolliert.
Um die Prozentgrenzwerte effektiv zu machen, konfigurieren Sie die tempdb-Datendateien neu, um die Anforderungen zu erfüllen, und führen Sie ALTER RESOURCE GOVERNOR RECONFIGURE erneut aus. Weitere Informationen zum Konfigurieren von SIZE, FILEGROWTH sowie MAXSIZE finden Sie unter "ALTER DATABASE File and Filegroup Options".
Hinweis
Bei einer neuen Instanz von SQL Server ist die Datendatei MAXSIZEUNLIMITED und FILEGROWTH ist größer als null, was bedeutet, dass die Prozentgrenzen nicht wirksam sind. Um Prozentgrenzwerte zu verwenden, müssen Sie eine der folgenden Aktionen ausführen:
- Vergrößern Sie
tempdb-Datendateien auf die vorgesehene Größe und legen SieFILEGROWTHauf Null fest. - Legen Sie die
MAXSIZEeinzelnen Datendateien auf einen begrenzten Wert fest.Stellen Sie für jedes
tempdbDatendateivolume sicher, dass die Summe derMAXSIZEWerte für Dateien auf dem Volume kleiner oder gleich dem verfügbaren Speicherplatz auf dem Volume ist.Wenn ein Volume beispielsweise über 100 GB freien Speicherplatz verfügt und zwei
tempdbDatendateien enthält, machen Sie dieMAXSIZEeinzelnen Dateien auf 50 GB oder weniger.
Wenn ein Prozentlimit in Kraft ist und Sie tempdb Datendateien hinzufügen, entfernen oder die Größe ändern, müssen Sie ALTER RESOURCE GOVERNOR RECONFIGURE ausführen, um den Ressourcen-Manager mit der neuen maximalen Größe von tempdb (100%) zu aktualisieren.
Funktionsweise
In diesem Abschnitt wird die Governance von Weltraumressourcen detailliert beschrieben tempdb.
Da Datenseiten
tempdbzugeordnet und freigegeben werden, führt der Resource Governor Buch über den von jeder Workloadgruppe verbrauchten Speicherplatz.Wenn die Ressourcensteuerung aktiviert ist und für eine Workloadgruppe ein
tempdbSpeicherplatzverbrauchslimit festgelegt ist, und eine Anforderung (eine Abfrage), die in der Workloadgruppe ausgeführt wird, versucht, den Gesamtspeicherverbrauchtempdbder Gruppe über den Grenzwert zu bringen, wird die Anforderung mit Fehler 1138, Schweregrad 17 abgebrochen, konnte keine neue Seite für die Datenbank "tempdb" zuordnen, da dies den grenzwert für die Workloadgruppe "Workload-Group-name" überschreitet.Wenn eine Anforderung mit Fehler 1138 abgebrochen wird, wird der Wert in der
total_tempdb_data_limit_violation_countSpalte der sys.dm_resource_governor_workload_groups dynamischen Verwaltungsansicht (DYNAMIC Management View, DMV) um eins erhöht, und dastempdb_data_workload_group_limit_reachederweiterte Ereignis wird ausgelöst.Die Ressourcenkontrolle verfolgt alle
tempdbVerwendungen, die einer Workloadgruppe zugeordnet werden können, einschließlich temporärer Tabellen, Variablen (einschließlich Tabellenvariablen), tabellenwertiger Parameter, nicht temporärer Tabellen, Cursors und Verwendungen vontempdbwährend der Abfrageverarbeitung, wie Spools, Überläufe, Arbeitstabellen und Arbeitsdateien.Der Speicherplatzverbrauch für globale temporäre Tabellen und nichttemporäre Tabellen wird
tempdbunter der Workloadgruppe berücksichtigt, die die erste Zeile in die Tabelle einfügt, auch wenn Sitzungen in anderen Workloadgruppen Zeilen in derselben Tabelle hinzufügen, ändern oder entfernen.Die konfigurierten
tempdbVerbrauchsgrenzwerte für jede Workloadgruppe werden in der sys.resource_governor_workload_groups Katalogansicht in dengroup_max_tempdb_data_mbundgroup_max_tempdb_data_percentspalten verfügbar gemacht.Der aktuelle Verbrauch und der Spitzenverbrauch von
tempdb-Speicherplatz durch eine Workload-Gruppe werden in der DMV sys.dm_resource_governor_workload_groups in den Spaltentempdb_data_space_kbbzw.peak_tempdb_data_space_kbzur Verfügung gestellt.Tipp
tempdb_data_space_kbundpeak_tempdb_data_space_kbSpalten in sys.dm_resource_governor_workload_groups werden beibehalten, auch wenn keine Grenzwerte für dentempdbPlatzverbrauch festgelegt werden.Sie können die Klassifiziererfunktion und Arbeitsauslastungsgruppen erstellen, ohne zunächst Einschränkungen festzulegen. Überwachen Sie
tempdbdie Verwendung durch jede Gruppe im Laufe der Zeit, um repräsentative Nutzungsmuster zu identifizieren, und legen Sie dann nach Bedarf Grenzwerte fest.TempdbDie Nutzung der Versionsspeicher, einschließlich des persistenten Versionsspeichers (PVS), wird nicht gesteuert, wenn die beschleunigte Datenbankwiederherstellung (ADR) aktiviert isttempdb, da Zeilenversionen möglicherweise von Anforderungen in mehreren Workloadgruppen verwendet werden.Der Speicherplatzverbrauch in
tempdbwird als die Anzahl der verwendeten 8-KB-Datenseiten gerechnet. Selbst wenn eine Seite nicht vollständig mit Daten gefüllt ist, fügt sie demtempdbVerbrauch einer Workloadgruppe 8 KB hinzu.TempdbDie Speicherplatzverwaltung wird über die gesamte Lebensdauer der Workload-Gruppe beibehalten. Wenn eine Workloadgruppe verworfen wird, während globale temporäre Tabellen oder nichttemporäre Tabellen mit den Daten, die dieser Workloadgruppe zugeordnet sind, intempdbverbleiben, wird der von diesen Tabellen verwendete Speicherplatz nicht unter einer anderen Workloadgruppe berücksichtigt.TempdbData-Governance steuert den Speicherplatz intempdb-Datendateien, aber nicht den Speicherplatz auf den zugrunde liegenden Volumes. Wenn Sietempdb-Datendateien nicht vorab auf die vorgesehene Größe vergrößern, wird der Platz auf dem/den Volume(s), auf dem/denen sichtempdbbefindet, möglicherweise von anderen Dateien belegt. Wenn kein Platz mehr fürtempdb-Datendateien zum Vergrößern vorhanden ist, könntetempdbkeinen Platz mehr haben, bevor das Workload-Gruppenlimit für dentempdb-Speicherverbrauch erreicht ist.Die Space Resource Governance gilt für Datendateien in
tempdb, jedoch nicht für die Transaktionsprotokolldatei. Um sicherzustellen, dass das Transaktionsprotokolltempdbkeinen großen Speicherplatz belegt, aktivieren Sie ADR intempdb.
Unterschiede bei der Raumnachverfolgung auf Sitzungsebene
Die sys.dm_db_session_space_usage DMV stellt tempdb für jede Sitzung Raumzuweisungs- und Deallocation-Statistiken bereit. Selbst wenn es nur eine Sitzung in einer Workloadgruppe gibt, stimmen die von diesem DMV bereitgestellten Raumnutzungsstatistiken möglicherweise nicht exakt mit den statistiken überein, die in der ansicht sys.dm_resource_governor_workload_groups bereitgestellt werden, aus den folgenden Gründen:
- Im Gegensatz zu
sys.dm_resource_governor_workload_groups:sys.dm_db_session_space_usage- Spiegelt die Speicherplatznutzung durch die derzeit ausgeführten Aufgaben nicht wider
tempdb. Die Statistiken insys.dm_db_session_space_usagewerden aktualisiert, sobald eine Aufgabe abgeschlossen ist. Statistiken insys.dm_resource_governor_workload_groupswerden kontinuierlich aktualisiert. - Verfolgt keine Indexzuordnungsseiten (IAM) nach. Weitere Informationen finden Sie im Architekturhandbuch für Seiten und Extents.
- Spiegelt die Speicherplatznutzung durch die derzeit ausgeführten Aufgaben nicht wider
- Nachdem Zeilen gelöscht wurden oder wenn eine Tabelle, ein Index oder eine Partition entfernt oder gekürzt wird, können Datenseiten möglicherweise von einem asynchronen Hintergrundprozess zum Freigeben freigegeben werden. Diese Seiten-Freigabe kann verzögert auftreten.
sys.dm_resource_governor_workload_groupsspiegelt diese Seitenfreigaben wider, selbst wenn die Sitzung, die diese Freigaben verursacht hat, abgeschlossen wurde und insys.dm_db_session_space_usagenicht mehr vorhanden ist.
Bewährte Verfahren für die Ressourcenverwaltung von Tempdb
Bevor Sie die Governance für tempdb-Speicherplatzressourcen konfigurieren, sollten Sie die folgenden bewährten Verfahren berücksichtigen:
Überprüfen Sie die allgemeinen bewährten Methoden für den Ressourcengouverneur.
Vermeiden Sie für die meisten Szenarien das Festlegen des Grenzwerts für den
tempdbSpeicherplatzverbrauch auf einen kleinen Wert oder null, insbesondere für diedefaultWorkloadgruppe. Wenn Sie dies tun, können viele häufige Aufgaben fehlschlagen, wenn sie Speicherplatz intempdbzuordnen müssen. Wenn Sie z. B. entweder das feste oder das Prozentlimit für diedefaultWorkloadgruppe auf 0 festlegen, können Sie den Objekt-Explorer möglicherweise nicht in SQL Server Management Studio (SSMS) öffnen.Wenn Sie keine benutzerdefinierten Workload-Gruppen und eine Klassifiziererfunktion erstellt haben, die Workloads in ihren dedizierten Gruppen platziert, vermeiden Sie das Beschränken der Nutzung von
tempdbdurch diedefaultWorkload-Gruppe. Dies kann Abfragen mit Fehler 1138 abbrechen, wenntempdbnoch ungenutzten Speicherplatz hat, der von keiner Benutzerlast verwendet werden kann.Es ist zulässig, dass die Summe der
GROUP_MAX_TEMPDB_DATA_MBWerte für alle Workloadgruppen die maximaletempdbGröße überschreitet. Wenn die maximaletempdbGröße beispielsweise 100 GB beträgt, können dieGROUP_MAX_TEMPDB_DATA_MBGrenzwerte für Arbeitsauslastungsgruppe A und Workloadgruppe B jeweils 80 GB betragen.Dieser Ansatz verhindert weiterhin, dass jede Workloadgruppe den gesamten Speicherplatz
tempdbverbraucht, indem sie 20 GB für andere Workloadgruppen verlassen. Gleichzeitig vermeiden Sie unnötige Abfrageabbrüche, wenn noch freiertempdbSpeicherplatz verfügbar ist, da Arbeitsauslastungsgruppen A und B nicht gleichzeitig einen großentempdbSpeicherplatz verbrauchen.Ebenso kann die Summe der
GROUP_MAX_TEMPDB_DATA_PERCENTWerte für alle Workloadgruppen 100 Prozent überschreiten. Sie können jeder Gruppe mehrtempdbSpeicherplatz zuweisen, wenn Sie wissen, dass es unwahrscheinlich ist, dass mehrere Gruppen gleichzeitig eine hohetempdbNutzung verursachen.
Verwandte Inhalte
- Tutorial: Beispiele zur Konfiguration der Ressourcenverwaltung für den tempdb-Speicher
- Ressourcenkontrolle
- Lernprogramm: Konfigurationsbeispiele für Ressourcenverwaltung und bewährte Methoden
- ALTER RESOURCE GOVERNOR
- Die Workload-Gruppe erstellen
- ALTER WORKLOAD GROUP
- DROP WORKLOAD GROUP
- sys.resource_governor_workload_groups
- sys.dm_resource_governor_workload_groups