ALTER WORKLOAD GROUP (Transact-SQL)
Auswählen eines Produkts
Wählen Sie in der folgenden Zeile den Namen des Produkts aus, an dem Sie interessiert sind. Dann werden nur Informationen zu diesem Produkt angezeigt.
* SQL Server *
SQL Server und SQL Managed Instance
Ändert eine vorhandene Konfiguration einer Resource Governor-Arbeitsauslastungsgruppe und weist sie optional einem Resource Governor-Ressourcenpool zu.
Hinweis
Für Azure SQL verwaltete Instanz müssen Sie sich im Kontext der master
Datenbank befinden, um die Konfiguration der Ressourcenkontrolle zu ändern.
Transact-SQL-Syntaxkonventionen
Syntax
ALTER WORKLOAD GROUP { group_name | "default" }
[ WITH
([ IMPORTANCE = { LOW | MEDIUM | HIGH } ]
[ [ , ] REQUEST_MAX_MEMORY_GRANT_PERCENT = value ]
[ [ , ] REQUEST_MAX_CPU_TIME_SEC = value ]
[ [ , ] REQUEST_MEMORY_GRANT_TIMEOUT_SEC = value ]
[ [ , ] MAX_DOP = value ]
[ [ , ] GROUP_MAX_REQUESTS = value ] )
]
[ USING { pool_name | "default" } ]
[ ; ]
Argumente
group_name | „default“
Der Name einer vorhandenen benutzerdefinierten Arbeitsauslastungsgruppe oder der standardmäßigen Ressourcenkontrollen-Arbeitsauslastungsgruppe. Resource Governor erstellt die „Standardgruppe“ und interne Gruppen, wenn SQL Server installiert ist.
Die default-Option muss in Anführungszeichen (""
) oder Klammern ([]
) eingeschlossen werden, wenn sie mit ALTER WORKLOAD GROUP
verwendet wird, um einen Konflikt mit dem vom System reservierten Wort DEFAULT zu vermeiden. Weitere Informationen finden Sie unter Datenbankbezeichner.
Für vordefinierte Arbeitsauslastungsgruppen und Ressourcenpools werden ausschließlich kleingeschriebene Namen verwendet, z.B. "default". Dies sollte bei Servern beachtet werden, die bei der Sortierung zwischen Groß-/Kleinschreibung unterscheiden. Server, die bei der Sortierung nicht zwischen Groß-/Kleinbuchstaben unterscheiden, wie SQL_Latin1_General_CP1_CI_AS
, behandeln "default"
und "Default"
gleich.
IMPORTANCE = { LOW | MEDIUM | HIGH }
Gibt die relative Wichtigkeit einer Anforderung in der Arbeitsauslastungsgruppe an. Die Wichtigkeit kann einen der folgenden Werte aufweisen:
- LOW
- MEDIUM (Standard)
- HIGH
Intern wird jede Relevanzeinstellung als Zahl gespeichert, die für Berechnungen verwendet wird.
IMPORTANCE hat einen lokalen Bezug zum Ressourcenpool; Arbeitsauslastungsgruppen mit verschiedener Wichtigkeit innerhalb desselben Ressourcenpools beeinflussen sich gegenseitig, haben jedoch keine Auswirkungen auf Arbeitsauslastungsgruppen in anderen Ressourcenpools.
REQUEST_MAX_MEMORY_GRANT_PERCENT = value
Gibt die Höchstmenge an Arbeitsspeicher an, die eine einzelne Anforderung vom Pool in Anspruch nehmen kann. value entspricht einem Prozentwert, der relativ zur Ressourcenpoolgröße ist, die mit MAX_MEMORY_PERCENT festgelegt wird. Der Standardwert ist 25. Die angegebene Menge bezieht sich nur auf den für die Abfrageausführung gewährten Arbeitsspeicher.
value ist bis SQL Server 2017 (14.x) ein int, und der zulässige Bereich liegt zwischen 1 und 100. Ab SQL Server 2019 (15.x) ist der Wert vom Datentyp float, und der zulässige Bereich liegt zwischen 0 und 100.
Wichtig
Das Festlegen von value auf 0 (null) verhindert, dass Abfragen mit SORT- und HASH JOIN-Vorgängen in benutzerdefinierten Arbeitsauslastungsgruppen ausgeführt werden.
Es wird davon abgeraten, value auf einen höheren Wert als 70 festzulegen, da der Server möglicherweise nicht genug freien Arbeitsspeicher reservieren kann, wenn andere Abfragen gleichzeitig ausgeführt werden. Dadurch tritt möglicherweise der Timeoutfehler 8645 auf.
Wenn die Arbeitsspeicheranforderungen der Abfrage den Grenzwert überschreiten, der von diesem Parameter angegeben wird, führt der Server folgende Vorgänge aus:
- Bei benutzerdefinierten Arbeitsauslastungsgruppen versucht der Server, den Grad der Parallelität für diese Abfrage zu reduzieren, bis die Arbeitsspeicheranforderung den Grenzwert unterschreitet oder bis der Grad der Parallelität dem Wert 1 entspricht. Wenn die Arbeitsspeicheranforderung der Abfrage den Grenzwert immer noch überschreitet, tritt Fehler 8657 auf.
- Bei internen und Standard-Arbeitsauslastungsgruppen lässt der Server zu, dass der Abfrage der erforderliche Arbeitsspeicher zugewiesen wird.
In beiden Fällen kann es zum Timeoutfehler 8645 kommen, wenn der Server nicht über ausreichend physischen Arbeitsspeicher verfügt.
REQUEST_MAX_CPU_TIME_SEC = value
Gibt die maximale CPU-Zeit in Sekunden an, die eine Anforderung beanspruchen kann. value muss 0 (null) oder ein positiver Integer sein. Die Standardeinstellung für value ist 0 (null), also unbegrenzt. Resource Governor verhindert nicht, dass eine Anforderung bei Erreichung des maximalen Zeitlimits fortgesetzt wird. Es wird jedoch ein Ereignis generiert. Weitere Informationen finden Sie unter CPU Threshold Exceeded (Ereignisklasse).
Ab SQL Server 2016 (13.x) SP2 und SQL Server 2017 (14.x) CU3 bricht Resource Governor eine Anforderung mit Ablaufverfolgungsflag 2422 ab, wenn die maximale Zeit überschritten wird.
REQUEST_MEMORY_GRANT_TIMEOUT_SEC = value
Gibt die maximale Zeit in Sekunden an, die eine Abfrage auf das Freiwerden einer Arbeitspeicherzuweisung (Arbeitsspeicherpuffer) wartet.
Eine Abfrage schlägt nicht grundsätzlich fehl, wenn das Timeout der Arbeitsspeicherzuweisung erreicht wird. Eine Abfrage schlägt nur fehl, wenn zu viele Abfragen gleichzeitig ausgeführt werden. Andernfalls könnte die Abfrage nur die minimale Arbeitsspeicherzuweisung nutzen, was zu reduzierter Abfrageleistung führen kann.
value muss eine positive ganze Zahl sein. Die Standardeinstellung für value ist 0 (null). Hierbei wird eine interne Berechnung basierend auf den Abfragekosten verwendet, um die maximale Zeit zu ermitteln.
MAX_DOP = value
Gibt den maximalen Grad der Parallelität (DOP) für parallele Anforderungen an. value muss 0 (null) oder eine positive Ganzzahl zwischen 1 und 255 sein. Wenn value 0 ist, wählt der Server den maximalen Grad an Parallelismus aus. Dies ist die Standardeinstellung und die empfohlene Einstellung.
Der tatsächliche Wert, den die Datenbank-Engine für MAX_DOP festlegt, ist möglicherweise kleiner als der angegebene Wert. Der endgültige Wert wird von Formel min(255, number of CPUs) bestimmt.
Achtung
Das Ändern von MAX_DOP kann die Leistung des Servers beeinträchtigen. Wenn Sie MAX_DOP ändern müssen, wird empfohlen, diesen auf einen Wert festzulegen, der kleiner oder gleich der maximalen Anzahl der Hardware- Zeitplanungsmodule ist, die in einem einzelnen NUMA-Knoten vorhanden sind. Es wird empfohlen, MAX_DOP nicht auf einen höheren Wert als 8 festzulegen.
MAX_DOP wird wie folgt behandelt:
MAX_DOP als Abfragehinweis wird so lange berücksichtigt, wie die Arbeitsauslastungsgruppe MAX_DOP nicht überschritten wird.
###MAX_DOP als Abfragehinweis überschreibt immer sp_configure 'max. Grad an Parallelität'.
Die Arbeitsauslastungsgruppe MAX_DOP überschreibt sp_configure 'Max. Grad an Parallelität'.
Wenn die Abfrage zur Kompilierzeit als seriell
(MAX_DOP = 1)
markiert ist, kann sie zur Laufzeit nicht wieder in parallel geändert werden, und zwar unabhängig von der Arbeitsauslastungsgruppe oder der sp_configure-Einstellung.
Nach der Konfiguration kann DOP nur bei Arbeitsspeicher-Engpässen verringert werden. Die Neukonfiguration der Arbeitsauslastungsgruppe ist während des Wartens in der Speicherzuweisungs-Warteschlange nicht sichtbar.
GROUP_MAX_REQUESTS = value
Gibt die maximale Anzahl gleichzeitiger Anforderungen an, die in der Arbeitsauslastungsgruppe ausgeführt werden können. value muss 0 (null) oder ein positiver Integer sein. Die Standardeinstellung für value, 0, lässt unbegrenzte Anforderungen zu. Wenn die maximale Anzahl gleichzeitiger Anforderungen erreicht wird, kann sich ein Benutzer dieser Gruppe zwar registrieren, wird jedoch in den Wartezustand versetzt, bis die Anzahl gleichzeitiger Anforderungen unter den angegebenen Wert gefallen ist.
USING { pool_name"default" }
Verknüpft die Arbeitsauslastungsgruppe mit dem benutzerdefinierten Ressourcenpool, der durch pool_name angegeben wird, wodurch die Arbeitsauslastungsgruppe in den Ressourcenpool eingefügt wird. Wenn pool_name nicht bereitgestellt wird oder wenn das USING-Argument nicht verwendet wird, wird die Arbeitsauslastungsgruppe in den vordefinierten Standardpool von Resource Governor eingefügt.
Bei der default-Option wird zwischen Groß- und Kleinschreibung unterschieden, und sie muss in Anführungszeichen (""
) oder Klammern ([]
) eingeschlossen werden, wenn sie mit ALTER WORKLOAD GROUP
verwendet wird, um einen Konflikt mit dem vom System reservierten Wort DEFAULT zu vermeiden. Weitere Informationen finden Sie unter Datenbankbezeichner.
Bemerkungen
ALTER WORKLOAD GROUP
ist für die Standardgruppe zulässig.
Änderungen an der Konfiguration der Arbeitsauslastungsgruppe werden erst wirksam, nachdem ALTER RESOURCE GOVERNOR RECONFIGURE
ausgeführt wurde. Beim Ändern einer Einstellung, die sich auf einen Plan auswirkt, wird die neue Einstellung in zuvor zwischengespeicherten Plänen erst nach Ausführung von DBCC FREEPROCCACHE (*pool_name*)
wirksam, wobei pool_name für den Namen eines Resource Governor-Ressourcenpools steht, mit dem die Arbeitsauslastungsgruppe verknüpft ist.
Wenn Sie MAX_DOP auf 1 festlegen, muss
DBCC FREEPROCCACHE
nicht ausgeführt werden, da parallele Pläne im seriellen Modus ausgeführt werden können. Möglicherweise ist dies jedoch nicht so effizient wie ein als serieller Plan kompilierter Plan.Wenn Sie MAX_DOP von 1 in 0 ändern oder einen Wert von mehr als 1 festlegen, muss
DBCC FREEPROCCACHE
nicht ausgeführt werden. Serielle Pläne können jedoch nicht parallel ausgeführt werden. Das Löschen des entsprechenden Cache ermöglicht daher neuen Plänen, mit Parallelität kompiliert zu werden.
Achtung
Das Löschen zwischengespeicherter Pläne aus einem Ressourcenpool, der mehreren Arbeitsauslastungsgruppen zugeordnet ist, wirkt sich auf alle Arbeitsauslastungsgruppen mit dem benutzerdefinierten Ressourcenpool aus, der durch pool_name ausgewiesen wird.
Sie sollten bei der Ausführung von DDL-Anweisungen mit den Resource Governor-Zuständen vertraut sein. Weitere Informationen finden Sie unter Resource Governor.
REQUEST_MEMORY_GRANT_PERCENT
: In SQL Server 2005 (9.x) kann die Indexerstellung verwendet werden, um mehr Arbeitsbereichsspeicher als ursprünglich zugewiesen zu verwenden, damit eine bessere Leistung erzielt wird. Die Ressourcenkontrolle in höheren Versionen unterstützt diese besondere Behandlung, die ursprüngliche und alle weiteren Speicherzuweisungen werden jedoch durch den Ressourcenpool und die Einstellungen für Arbeitsauslastungsgruppe begrenzt.
Indexerstellung für eine partitionierte Tabelle
Der durch die Indexerstellung für nicht ausgerichtete partitionierte Tabellen belegte Arbeitsspeicher ist proportional zur Anzahl der beteiligten Partitionen. Wenn der insgesamt erforderliche Arbeitsspeicher die Grenze (REQUEST_MAX_MEMORY_GRANT_PERCENT
) übersteigt, die pro Abfrage von der Resource Governor-Arbeitsauslastungsgruppe festgelegt wurde, kann die Indexerstellung möglicherweise nicht erfolgreich ausgeführt werden. Da die Workloadsgruppe „Standard“ Abfragen zulässt, die die pro Abfrage festgelegte Grenze mit dem mindestens für eine Kompatibilität mit SQL Server 2005 (9.x) erforderlichen Arbeitsspeicher übersteigen, können Benutzer*innen dieselbe Indexerstellung in der Workloadgruppe „Standard“ ausführen. Voraussetzung ist, dass der Standardressourcenpool über ausreichend Gesamtarbeitsspeicher verfügt, um eine solche Abfrage ausführen zu können.
Berechtigungen
Erfordert die CONTROL SERVER
-Berechtigung.
Beispiele
Das folgende Beispiel veranschaulicht, wie die Wichtigkeit von Anforderungen in der Standardgruppe von MEDIUM
in LOW
geändert werden kann.
ALTER WORKLOAD GROUP "default"
WITH (IMPORTANCE = LOW);
GO
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO
Das folgende Beispiel veranschaulicht, wie eine Arbeitsauslastungsgruppe aus dem Pool, in dem sie sich befindet, in den Standardpool verschoben wird.
ALTER WORKLOAD GROUP adHoc
USING [default];
GO
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO
Weitere Informationen
* SQL Managed Instance *
SQL Server und SQL Managed Instance
Ändert eine vorhandene Konfiguration einer Resource Governor-Arbeitsauslastungsgruppe und weist sie optional einem Resource Governor-Ressourcenpool zu.
Hinweis
Für Azure SQL verwaltete Instanz müssen Sie sich im Kontext der master
Datenbank befinden, um die Konfiguration der Ressourcenkontrolle zu ändern.
Transact-SQL-Syntaxkonventionen
Syntax
ALTER WORKLOAD GROUP { group_name | "default" }
[ WITH
([ IMPORTANCE = { LOW | MEDIUM | HIGH } ]
[ [ , ] REQUEST_MAX_MEMORY_GRANT_PERCENT = value ]
[ [ , ] REQUEST_MAX_CPU_TIME_SEC = value ]
[ [ , ] REQUEST_MEMORY_GRANT_TIMEOUT_SEC = value ]
[ [ , ] MAX_DOP = value ]
[ [ , ] GROUP_MAX_REQUESTS = value ] )
]
[ USING { pool_name | "default" } ]
[ ; ]
Argumente
group_name | „default“
Der Name einer vorhandenen benutzerdefinierten Arbeitsauslastungsgruppe oder der standardmäßigen Ressourcenkontrollen-Arbeitsauslastungsgruppe. Resource Governor erstellt die „Standardgruppe“ und interne Gruppen, wenn SQL Server installiert ist.
Die default-Option muss in Anführungszeichen (""
) oder Klammern ([]
) eingeschlossen werden, wenn sie mit ALTER WORKLOAD GROUP
verwendet wird, um einen Konflikt mit dem vom System reservierten Wort DEFAULT zu vermeiden. Weitere Informationen finden Sie unter Datenbankbezeichner.
Für vordefinierte Arbeitsauslastungsgruppen und Ressourcenpools werden ausschließlich kleingeschriebene Namen verwendet, z.B. "default". Dies sollte bei Servern beachtet werden, die bei der Sortierung zwischen Groß-/Kleinschreibung unterscheiden. Server, die bei der Sortierung nicht zwischen Groß-/Kleinbuchstaben unterscheiden, wie SQL_Latin1_General_CP1_CI_AS
, behandeln "default"
und "Default"
gleich.
IMPORTANCE = { LOW | MEDIUM | HIGH }
Gibt die relative Wichtigkeit einer Anforderung in der Arbeitsauslastungsgruppe an. Die Wichtigkeit kann einen der folgenden Werte aufweisen:
- LOW
- MEDIUM (Standard)
- HIGH
Intern wird jede Relevanzeinstellung als Zahl gespeichert, die für Berechnungen verwendet wird.
IMPORTANCE hat einen lokalen Bezug zum Ressourcenpool; Arbeitsauslastungsgruppen mit verschiedener Wichtigkeit innerhalb desselben Ressourcenpools beeinflussen sich gegenseitig, haben jedoch keine Auswirkungen auf Arbeitsauslastungsgruppen in anderen Ressourcenpools.
REQUEST_MAX_MEMORY_GRANT_PERCENT = value
Gibt die Höchstmenge an Arbeitsspeicher an, die eine einzelne Anforderung vom Pool in Anspruch nehmen kann. value entspricht einem Prozentwert, der relativ zur Ressourcenpoolgröße ist, die mit MAX_MEMORY_PERCENT festgelegt wird. Der Standardwert ist 25. Die angegebene Menge bezieht sich nur auf den für die Abfrageausführung gewährten Arbeitsspeicher.
value ist bis SQL Server 2017 (14.x) ein int, und der zulässige Bereich liegt zwischen 1 und 100. Ab SQL Server 2019 (15.x) ist der Wert vom Datentyp float, und der zulässige Bereich liegt zwischen 0 und 100.
Wichtig
Das Festlegen von value auf 0 (null) verhindert, dass Abfragen mit SORT- und HASH JOIN-Vorgängen in benutzerdefinierten Arbeitsauslastungsgruppen ausgeführt werden.
Es wird davon abgeraten, value auf einen höheren Wert als 70 festzulegen, da der Server möglicherweise nicht genug freien Arbeitsspeicher reservieren kann, wenn andere Abfragen gleichzeitig ausgeführt werden. Dadurch tritt möglicherweise der Timeoutfehler 8645 auf.
Wenn die Arbeitsspeicheranforderungen der Abfrage den Grenzwert überschreiten, der von diesem Parameter angegeben wird, führt der Server folgende Vorgänge aus:
- Bei benutzerdefinierten Arbeitsauslastungsgruppen versucht der Server, den Grad der Parallelität für diese Abfrage zu reduzieren, bis die Arbeitsspeicheranforderung den Grenzwert unterschreitet oder bis der Grad der Parallelität dem Wert 1 entspricht. Wenn die Arbeitsspeicheranforderung der Abfrage den Grenzwert immer noch überschreitet, tritt Fehler 8657 auf.
- Bei internen und Standard-Arbeitsauslastungsgruppen lässt der Server zu, dass der Abfrage der erforderliche Arbeitsspeicher zugewiesen wird.
In beiden Fällen kann es zum Timeoutfehler 8645 kommen, wenn der Server nicht über ausreichend physischen Arbeitsspeicher verfügt.
REQUEST_MAX_CPU_TIME_SEC = value
Gibt die maximale CPU-Zeit in Sekunden an, die eine Anforderung beanspruchen kann. value muss 0 (null) oder ein positiver Integer sein. Die Standardeinstellung für value ist 0 (null), also unbegrenzt. Resource Governor verhindert nicht, dass eine Anforderung bei Erreichung des maximalen Zeitlimits fortgesetzt wird. Es wird jedoch ein Ereignis generiert. Weitere Informationen finden Sie unter CPU Threshold Exceeded (Ereignisklasse).
Ab SQL Server 2016 (13.x) SP2 und SQL Server 2017 (14.x) CU3 bricht Resource Governor eine Anforderung mit Ablaufverfolgungsflag 2422 ab, wenn die maximale Zeit überschritten wird.
REQUEST_MEMORY_GRANT_TIMEOUT_SEC = value
Gibt die maximale Zeit in Sekunden an, die eine Abfrage auf das Freiwerden einer Arbeitspeicherzuweisung (Arbeitsspeicherpuffer) wartet.
Eine Abfrage schlägt nicht grundsätzlich fehl, wenn das Timeout der Arbeitsspeicherzuweisung erreicht wird. Eine Abfrage schlägt nur fehl, wenn zu viele Abfragen gleichzeitig ausgeführt werden. Andernfalls könnte die Abfrage nur die minimale Arbeitsspeicherzuweisung nutzen, was zu reduzierter Abfrageleistung führen kann.
value muss eine positive ganze Zahl sein. Die Standardeinstellung für value ist 0 (null). Hierbei wird eine interne Berechnung basierend auf den Abfragekosten verwendet, um die maximale Zeit zu ermitteln.
MAX_DOP = value
Gibt den maximalen Grad der Parallelität (DOP) für parallele Anforderungen an. value muss 0 (null) oder eine positive Ganzzahl zwischen 1 und 255 sein. Wenn value 0 ist, wählt der Server den maximalen Grad an Parallelismus aus. Dies ist die Standardeinstellung und die empfohlene Einstellung.
Der tatsächliche Wert, den die Datenbank-Engine für MAX_DOP festlegt, ist möglicherweise kleiner als der angegebene Wert. Der endgültige Wert wird von Formel min(255, number of CPUs) bestimmt.
Achtung
Das Ändern von MAX_DOP kann die Leistung des Servers beeinträchtigen. Wenn Sie MAX_DOP ändern müssen, wird empfohlen, diesen auf einen Wert festzulegen, der kleiner oder gleich der maximalen Anzahl der Hardware- Zeitplanungsmodule ist, die in einem einzelnen NUMA-Knoten vorhanden sind. Es wird empfohlen, MAX_DOP nicht auf einen höheren Wert als 8 festzulegen.
MAX_DOP wird wie folgt behandelt:
MAX_DOP als Abfragehinweis wird so lange berücksichtigt, wie die Arbeitsauslastungsgruppe MAX_DOP nicht überschritten wird.
###MAX_DOP als Abfragehinweis überschreibt immer sp_configure 'max. Grad an Parallelität'.
Die Arbeitsauslastungsgruppe MAX_DOP überschreibt sp_configure 'Max. Grad an Parallelität'.
Wenn die Abfrage zur Kompilierzeit als seriell
(MAX_DOP = 1)
markiert ist, kann sie zur Laufzeit nicht wieder in parallel geändert werden, und zwar unabhängig von der Arbeitsauslastungsgruppe oder der sp_configure-Einstellung.
Nach der Konfiguration kann DOP nur bei Arbeitsspeicher-Engpässen verringert werden. Die Neukonfiguration der Arbeitsauslastungsgruppe ist während des Wartens in der Speicherzuweisungs-Warteschlange nicht sichtbar.
GROUP_MAX_REQUESTS = value
Gibt die maximale Anzahl gleichzeitiger Anforderungen an, die in der Arbeitsauslastungsgruppe ausgeführt werden können. value muss 0 (null) oder ein positiver Integer sein. Die Standardeinstellung für value, 0, lässt unbegrenzte Anforderungen zu. Wenn die maximale Anzahl gleichzeitiger Anforderungen erreicht wird, kann sich ein Benutzer dieser Gruppe zwar registrieren, wird jedoch in den Wartezustand versetzt, bis die Anzahl gleichzeitiger Anforderungen unter den angegebenen Wert gefallen ist.
USING { pool_name"default" }
Verknüpft die Arbeitsauslastungsgruppe mit dem benutzerdefinierten Ressourcenpool, der durch pool_name angegeben wird, wodurch die Arbeitsauslastungsgruppe in den Ressourcenpool eingefügt wird. Wenn pool_name nicht bereitgestellt wird oder wenn das USING-Argument nicht verwendet wird, wird die Arbeitsauslastungsgruppe in den vordefinierten Standardpool von Resource Governor eingefügt.
Bei der default-Option wird zwischen Groß- und Kleinschreibung unterschieden, und sie muss in Anführungszeichen (""
) oder Klammern ([]
) eingeschlossen werden, wenn sie mit ALTER WORKLOAD GROUP
verwendet wird, um einen Konflikt mit dem vom System reservierten Wort DEFAULT zu vermeiden. Weitere Informationen finden Sie unter Datenbankbezeichner.
Bemerkungen
ALTER WORKLOAD GROUP
ist für die Standardgruppe zulässig.
Änderungen an der Konfiguration der Arbeitsauslastungsgruppe werden erst wirksam, nachdem ALTER RESOURCE GOVERNOR RECONFIGURE
ausgeführt wurde. Beim Ändern einer Einstellung, die sich auf einen Plan auswirkt, wird die neue Einstellung in zuvor zwischengespeicherten Plänen erst nach Ausführung von DBCC FREEPROCCACHE (*pool_name*)
wirksam, wobei pool_name für den Namen eines Resource Governor-Ressourcenpools steht, mit dem die Arbeitsauslastungsgruppe verknüpft ist.
Wenn Sie MAX_DOP auf 1 festlegen, muss
DBCC FREEPROCCACHE
nicht ausgeführt werden, da parallele Pläne im seriellen Modus ausgeführt werden können. Möglicherweise ist dies jedoch nicht so effizient wie ein als serieller Plan kompilierter Plan.Wenn Sie MAX_DOP von 1 in 0 ändern oder einen Wert von mehr als 1 festlegen, muss
DBCC FREEPROCCACHE
nicht ausgeführt werden. Serielle Pläne können jedoch nicht parallel ausgeführt werden. Das Löschen des entsprechenden Cache ermöglicht daher neuen Plänen, mit Parallelität kompiliert zu werden.
Achtung
Das Löschen zwischengespeicherter Pläne aus einem Ressourcenpool, der mehreren Arbeitsauslastungsgruppen zugeordnet ist, wirkt sich auf alle Arbeitsauslastungsgruppen mit dem benutzerdefinierten Ressourcenpool aus, der durch pool_name ausgewiesen wird.
Sie sollten bei der Ausführung von DDL-Anweisungen mit den Resource Governor-Zuständen vertraut sein. Weitere Informationen finden Sie unter Resource Governor.
REQUEST_MEMORY_GRANT_PERCENT
: In SQL Server 2005 (9.x) kann die Indexerstellung verwendet werden, um mehr Arbeitsbereichsspeicher als ursprünglich zugewiesen zu verwenden, damit eine bessere Leistung erzielt wird. Die Ressourcenkontrolle in höheren Versionen unterstützt diese besondere Behandlung, die ursprüngliche und alle weiteren Speicherzuweisungen werden jedoch durch den Ressourcenpool und die Einstellungen für Arbeitsauslastungsgruppe begrenzt.
Indexerstellung für eine partitionierte Tabelle
Der durch die Indexerstellung für nicht ausgerichtete partitionierte Tabellen belegte Arbeitsspeicher ist proportional zur Anzahl der beteiligten Partitionen. Wenn der insgesamt erforderliche Arbeitsspeicher die Grenze (REQUEST_MAX_MEMORY_GRANT_PERCENT
) übersteigt, die pro Abfrage von der Resource Governor-Arbeitsauslastungsgruppe festgelegt wurde, kann die Indexerstellung möglicherweise nicht erfolgreich ausgeführt werden. Da die Workloadsgruppe „Standard“ Abfragen zulässt, die die pro Abfrage festgelegte Grenze mit dem mindestens für eine Kompatibilität mit SQL Server 2005 (9.x) erforderlichen Arbeitsspeicher übersteigen, können Benutzer*innen dieselbe Indexerstellung in der Workloadgruppe „Standard“ ausführen. Voraussetzung ist, dass der Standardressourcenpool über ausreichend Gesamtarbeitsspeicher verfügt, um eine solche Abfrage ausführen zu können.
Berechtigungen
Erfordert die CONTROL SERVER
-Berechtigung.
Beispiele
Das folgende Beispiel veranschaulicht, wie die Wichtigkeit von Anforderungen in der Standardgruppe von MEDIUM
in LOW
geändert werden kann.
ALTER WORKLOAD GROUP "default"
WITH (IMPORTANCE = LOW);
GO
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO
Das folgende Beispiel veranschaulicht, wie eine Arbeitsauslastungsgruppe aus dem Pool, in dem sie sich befindet, in den Standardpool verschoben wird.
ALTER WORKLOAD GROUP adHoc
USING [default];
GO
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO
Weitere Informationen
* Azure Synapse
Analytics *
Azure Synapse Analytics
Ändert eine vorhandene Arbeitsauslastungsgruppe.
Im Abschnitt zum ALTER WORKLOAD GROUP
-Verhalten weiter unten erhalten Sie weitere Informationen dazu, wie ALTER WORKLOAD GROUP
sich auf einem System mit laufenden und sich in der Warteschlange befindenden Anforderungen verhält.
Einschränkungen für CREAT WORKLOAD GROUP gelten auch für ALTER WORKLOAD GROUP
. Fragen Sie vor dem Ändern der Parameter sys.workload_management_workload_groups ab, um sicherzustellen, dass sich die Werte innerhalb akzeptabler Bereiche befinden.
Syntax
ALTER WORKLOAD GROUP group_name
WITH
([ MIN_PERCENTAGE_RESOURCE = value ]
[ [ , ] CAP_PERCENTAGE_RESOURCE = value ]
[ [ , ] REQUEST_MIN_RESOURCE_GRANT_PERCENT = value ]
[ [ , ] REQUEST_MAX_RESOURCE_GRANT_PERCENT = value ]
[ [ , ] IMPORTANCE = { LOW | BELOW_NORMAL | NORMAL | ABOVE_NORMAL | HIGH }]
[ [ , ] QUERY_EXECUTION_TIMEOUT_SEC = value ] )
[ ; ]
Argumente
group_name
Der Name einer vorhandenen benutzerdefinierten Arbeitsauslastungsgruppe, die geändert wird. group_name kann nicht geändert werden.
MIN_PERCENTAGE_RESOURCE = value
Dabei entspricht value einem Integer zwischen 0 und 100. Wenn Sie MIN_PERCENTAGE_RESOURCE bearbeiten, darf die Summe von MIN_PERCENTAGE_RESOURCE für alle Auslastungsgruppen 100 nicht überschreiten. Zum Ändern von MIN_PERCENTAGE_RESOURCE müssen alle laufenden Abfragen in der Arbeitsauslastungsgruppe abgeschlossen werden, bevor der Befehl ausgeführt wird. Weitere Informationen finden Sie im Abschnitt Verhalten von ALTER WORKLOAD GROUP in diesem Artikel.
CAP_PERCENTAGE_RESOURCE = value
value entspricht einem Integer von 1 bis 100. Der Wert für CAP_PERCENTAGE_RESOURCE muss den von MIN_PERCENTAGE_RESOURCE übersteigen. Zum Ändern von CAP_PERCENTAGE_RESOURCE müssen alle laufenden Abfragen in der Arbeitsauslastungsgruppe abgeschlossen werden, bevor der Befehl ausgeführt wird. Weitere Informationen finden Sie im Abschnitt Verhalten von ALTER WORKLOAD GROUP in diesem Artikel.
REQUEST_MIN_RESOURCE_GRANT_PERCENT = value
value entspricht einem Dezimalwert in einem Bereich zwischen 0,75 und 100,00. Der Wert für REQUEST_MIN_RESOURCE_GRANT_PERCENT muss ein Faktor von MIN_PERCENTAGE_RESOURCE und weniger als CAP_PERCENTAGE_RESOURCE sein.
REQUEST_MAX_RESOURCE_GRANT_PERCENT = value
value ist eine Dezimalzahl und muss größer als REQUEST_MIN_RESOURCE_GRANT_PERCENT sein.
IMPORTANCE = { LOW | BELOW_NORMAL | NORMAL | ABOVE_NORMAL | HIGH }
Diese Zeile ändert die Standardwichtigkeit einer Anforderung für die Arbeitsauslastungsgruppe.
QUERY_EXECUTION_TIMEOUT_SEC = value
Diese Zeile ändert die maximale Zeit in Sekunden, für deren Dauer eine Abfrage ausgeführt werden kann, bevor sie abgebrochen wird. Hierbei muss value 0 (Null) oder ein positiver Integer sein. Die Standardeinstellung für value ist 0 (null), also unbegrenzt.
Berechtigungen
Erfordert die Berechtigung CONTROL DATABASE.
Beispiel
Im folgenden Beispiel werden die Werte in der Katalogsicht für eine Arbeitsauslastungsgruppe namens wgDataLoads überprüft, und die Werte werden geändert.
SELECT *
FROM sys.workload_management_workload_groups
WHERE [name] = 'wgDataLoads'
ALTER WORKLOAD GROUP wgDataLoads WITH
( MIN_PERCENTAGE_RESOURCE = 40
, CAP_PERCENTAGE_RESOURCE = 80
, REQUEST_MIN_RESOURCE_GRANT_PERCENT = 10 )
Verhalten von ALTER WORKLOAD GROUP
Zu jedem Zeitpunkt gibt es 3 Arten von Anforderungen im System:
- Anforderungen, die noch nicht klassifiziert wurden.
- Anforderungen, die klassifiziert wurden und auf Objektsperren oder Systemressourcen warten.
- Anforderungen, die klassifiziert wurden und ausgeführt werden.
Auf Grundlage der Eigenschaften einer Arbeitsauslastungsgruppe, die geändert wird, unterscheidet sich der Zeitpunkt, zu dem die Einstellungen wirksam werden.
Relevanz oder query_execution_timeout
Für die Relevanz und die Eigenschaften von query_execution_timeout übernehmen nicht klassifizierte Anforderungen die neuen Konfigurationswerte. Wartende und laufende Anforderungen werden mit der alten Konfiguration ausgeführt. Die ALTER WORKLOAD GROUP
-Anforderung wird sofort ausgeführt, unabhängig davon, ob in der Arbeitsauslastungsgruppe Abfragen ausgeführt werden.
REQUEST_MIN_RESOURCE_GRANT_PERCENT oder REQUEST_MAX_RESOURCE_GRANT_PERCENT
Für REQUEST_MIN_RESOURCE_GRANT_PERCENT und REQUEST_MAX_RESOURCE_GRANT_PERCENT werden laufende Anforderungen mit der alten Konfiguration ausgeführt. Wartende Anforderungen und nicht klassifizierte Anforderungen übernehmen die neuen Konfigurationswerte. Die ALTER WORKLOAD GROUP
-Anforderung wird sofort ausgeführt, unabhängig davon, ob in der Arbeitsauslastungsgruppe Abfragen ausgeführt werden.
MIN_PERCENTAGE_RESOURCE oder CAP_PERCENTAGE_RESOURCE
Für MIN_PERCENTAGE_RESOURCE und CAP_PERCENTAGE_RESOURCE werden laufende Anforderungen mit der alten Konfiguration ausgeführt. Wartende Anforderungen und nicht klassifizierte Anforderungen übernehmen die neuen Konfigurationswerte.
Das Ändern von MIN_PERCENTAGE_RESOURCE und CAP_PERCENTAGE_RESOURCE erfordert die Ableitung laufender Anforderungen in der Arbeitsauslastungsgruppe, die geändert wird. Wenn MIN_PERCENTAGE_RESOURCE verringert wird, werden die freigegebenen Ressourcen an den Freigabepool zurückgegeben. So können Anforderungen aus anderen Arbeitsauslastungsgruppen diese auch verwenden. Umgekehrt wird durch die Erhöhung von MIN_PERCENTAGE_RESOURCE gewartet, bis Anforderungen, die nur die benötigten Ressourcen aus dem Freigabepool nutzen, verarbeitet werden. Der ALTER WORKLOAD GROUP
-Vorgang erhält vorrangigen Zugriff auf gemeinsam genutzte Ressourcen vor anderen Anforderungen, die auf die Ausführung im gemeinsamen Pool warten. Wenn die Summe von MIN_PERCENTAGE_RESOURCE 100 % übersteigt, schlägt die ALTER WORKLOAD GROUP
-Anforderung sofort fehl.
Sperrverhalten
Die Änderung einer Arbeitsauslastungsgruppe erfordert eine globale Sperre für alle Arbeitsauslastungsgruppen. Eine Anforderung zum Ändern einer Arbeitsauslastungsgruppe würde sich in einer Warteschlange hinter den bereits übermittelten CREATE- oder DROP-Anforderungen der Arbeitsauslastungsgruppe befinden. Wenn ein Batch von ALTER-Anweisungen gleichzeitig übermittelt wird, werden sie in der Reihenfolge verarbeitet, in der sie eingegangen sind.