CREATE 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
Erstellt eine Arbeitsauslastungsgruppe unter Ressourcenkontrolle und verknüpft die Arbeitsauslastungsgruppe mit einem Ressourcenpool der Ressourcenkontrolle. Resource Governor ist nicht in jeder Edition von SQL Server verfügbar. Eine Liste der Funktionen, die von den SQL Server-Editionen unterstützt werden, finden Sie unter Editionen und unterstützte Funktionen von SQL Server 2022.
Transact-SQL-Syntaxkonventionen
Syntax
CREATE WORKLOAD GROUP group_name
[ 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" ]
[ [ , ] EXTERNAL external_pool_name | "default" ] ]
} ]
[ ; ]
Argumente
group_name
Der benutzerdefinierte Name für die Arbeitsauslastungsgruppe. group_name ist alphanumerisch, kann bis zu 128 Zeichen lang sein, muss innerhalb einer Instanz von SQL Server eindeutig sein und muss den Regeln für Datenbankbezeichner entsprechen.
IMPORTANCE = { LOW | MEDIUM | HIGH }
Gibt die relative Wichtigkeit einer Anforderung in der Arbeitsauslastungsgruppe an. Für die Wichtigkeit sind folgende Einstellungen möglich, wobei MEDIUM die Standardeinstellung ist:
- LOW
- MEDIUM (Standard)
- HIGH
Hinweis
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.
value ist bis SQL Server 2017 (14.x) eine ganze Zahl, 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
Die angegebene Menge bezieht sich nur auf den für die Abfrageausführung gewährten Arbeitsspeicher.
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.
Beachten Sie, dass in beiden Fällen der Timeoutfehler 8645 auftreten kann, 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.
Hinweis
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).
Wichtig
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 Speicherzuweisung (Arbeitsspeicherpuffer) wartet. value muss 0 (null) oder ein positiver Integer 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.
Hinweis
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.
MAX_DOP = value
Gibt den maximalen Grad an Parallelität (MAXDOP) für die parallele Ausführung von Abfragen an. value muss 0 (null) oder ein positiver Integer sein. Der zulässige Bereich für value liegt zwischen 0 und 64. Die value-Standardeinstellung 0 verwendet die globale Einstellung.
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.
Hinweis
Die Workloadgruppe MAX_DOP überschreibt die Serverkonfiguration für den maximalen Grad an Parallelität und datenbankbereichsbezogene MAXDOP
Konfiguration.
Tipp
Um dies auf Abfrageebene zu erreichen, verwenden Sie den MAXDOP
Abfragehinweis. Die Festlegung des maximalen Grads an Parallelität als Abfragehinweis gilt, solange der MAX_DOP-Wert der Arbeitsauslastungsgruppe nicht überschritten wird. Wenn der MAXDOP-Wert des Abfragehinweises den mit Resource Governor konfigurierten Wert überschreitet, verwendet die SQL Server-Datenbank-Engine den MAX_DOP
-Wert von Resource Governor. Der Abfragehinweis für MAXDOP überschreibt stets die Serverkonfiguration des maximalen Grads an Parallelität.
Verwenden Sie MAXDOP
die Datenbankbereichskonfiguration, um dies auf Datenbankebene zu erreichen.
Verwenden Sie den MAXDOP-Wert (maximaler Parallelitätsgrad) der Serverkonfigurationsoption, um dies auf Serverebene zu erreichen.
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. Der Standardwert von value ist 0 (null) und lässt eine unbegrenzte Anzahl von Anforderungen zu. Wenn die maximale Anzahl gleichzeitiger Anforderungen erreicht wird, kann sich ein Benutzer dieser Gruppe zwar anmelden, wird jedoch in den Wartezustand versetzt, bis die Anzahl gleichzeitiger Anforderungen unter den angegebenen Wert gefallen ist.
USING { pool_name"default" }
Ordnet die Arbeitsauslastungsgruppe dem benutzerdefinierten Ressourcenpool zu, der durch pool_name identifiziert wird. Hierdurch wird die Arbeitsauslastungsgruppe im Endeffekt im Ressourcenpool platziert. Wenn pool_name nicht bereitgestellt wird oder wenn das USING-Argument nicht verwendet wird, wird die Arbeitsauslastungsgruppe in den vordefinierten Resource Governor-Standardpool eingefügt.
"default"
ist ein reserviertes Wort und muss bei der Verwendung mit USING in Anführungszeichen (""
) oder Klammern ([]
) eingeschlossen werden.
Hinweis
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.
EXTERNAL external_pool_name | "default"
Gilt für: SQL Server 2016 (13.x) und höher.
Die Arbeitsauslastungsgruppe kann einen externen Ressourcenpool angeben. Sie können eine Arbeitsauslastungsgruppe definieren und zwei Pools zuordnen:
- Ein Ressourcenpool für SQL Server-Arbeitsauslastungen und -Abfragen
- Ein externer Ressourcenpool für externe Prozesse. Weitere Informationen finden Sie unter sp_execute_external_script (Transact-SQL).
Bemerkungen
Wenn REQUEST_MEMORY_GRANT_PERCENT
verwendet wird, kann die Indexerstellung verwendet werden, um mehr Arbeitsbereichsspeicher als ursprünglich zugewiesen zu verwenden, damit eine bessere Leistung erzielt wird. Diese besondere Verarbeitung wird von Resource Governor in SQL Server unterstützt. Die Zuweisung anfänglichen und zusätzlichen Arbeitsspeichers wird jedoch durch den Ressourcenpool und die Einstellungen der Arbeitsauslastungsgruppe begrenzt.
Der Grenzwert MAX_DOP
wird taskbezogen festgelegt. Dieser Grenzwert gilt nicht pro Anforderung oder pro Abfrage. Das bedeutet, dass während einer parallelen Abfrageausführung eine einzelne Anforderung mehrere Tasks erzeugen kann, die einem Scheduler zugeordnet sind. Weitere Informationen finden Sie im Handbuch zur Thread- und Taskarchitektur.
Wenn MAX_DOP
verwendet wird und die Abfrage zur Kompilierzeit als seriell markiert ist, kann sie zur Laufzeit nicht wieder in parallel geändert werden, und zwar unabhängig von der Arbeitsauslastungsgruppe oder Serverkonfigurationseinstellung. Nach der Konfiguration von MAX_DOP
kann dieser Wert nur bei Arbeitsspeicherengpässen verringert werden. Die Neukonfiguration der Arbeitsauslastungsgruppe ist während des Wartens in der Speicherzuweisungs-Warteschlange nicht sichtbar.
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 Arbeitsauslastungsgruppe "default"
Abfragen zulässt, die die pro Abfrage festgelegte Grenze für mindestens erforderlichen Arbeitsspeicher übersteigen, können Benutzer dieselbe Indexerstellung in Arbeitsauslastungsgruppen des Typs "default"
ausführen. Voraussetzung ist, dass der Ressourcenpool "default"
über ausreichend Gesamtarbeitsspeicher verfügt, um eine solche Abfrage ausführen zu können.
Berechtigungen
Erfordert die CONTROL SERVER
-Berechtigung.
Beispiel
Erstellen Sie eine Arbeitsauslastungsgruppe namens newReports
, die Resource Governor-Standardeinstellungen verwendet und sich im Resource Governor-Standardpool befindet. Im Beispiel wird der default
-Pool angegeben, dies ist jedoch nicht erforderlich.
CREATE WORKLOAD GROUP newReports
WITH
(REQUEST_MAX_MEMORY_GRANT_PERCENT = 2.5
, REQUEST_MAX_CPU_TIME_SEC = 100
, MAX_DOP = 4)
USING "default" ;
GO
Weitere Informationen
* SQL Managed Instance *
SQL Server und SQL Managed Instance
Erstellt eine Arbeitsauslastungsgruppe unter Ressourcenkontrolle und verknüpft die Arbeitsauslastungsgruppe mit einem Ressourcenpool der Ressourcenkontrolle. Resource Governor ist nicht in jeder Edition von SQL Server verfügbar. Eine Liste der Funktionen, die von den SQL Server-Editionen unterstützt werden, finden Sie unter Editionen und unterstützte Funktionen von SQL Server 2022.
Transact-SQL-Syntaxkonventionen
Syntax
CREATE WORKLOAD GROUP group_name
[ 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" ]
[ [ , ] EXTERNAL external_pool_name | "default" ] ]
} ]
[ ; ]
Argumente
group_name
Der benutzerdefinierte Name für die Arbeitsauslastungsgruppe. group_name ist alphanumerisch, kann bis zu 128 Zeichen lang sein, muss innerhalb einer Instanz von SQL Server eindeutig sein und muss den Regeln für Datenbankbezeichner entsprechen.
IMPORTANCE = { LOW | MEDIUM | HIGH }
Gibt die relative Wichtigkeit einer Anforderung in der Arbeitsauslastungsgruppe an. Für die Wichtigkeit sind folgende Einstellungen möglich, wobei MEDIUM die Standardeinstellung ist:
- LOW
- MEDIUM (Standard)
- HIGH
Hinweis
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.
value ist bis SQL Server 2017 (14.x) eine ganze Zahl, 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
Die angegebene Menge bezieht sich nur auf den für die Abfrageausführung gewährten Arbeitsspeicher.
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.
Beachten Sie, dass in beiden Fällen der Timeoutfehler 8645 auftreten kann, 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.
Hinweis
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).
Wichtig
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 Speicherzuweisung (Arbeitsspeicherpuffer) wartet. value muss 0 (null) oder ein positiver Integer 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.
Hinweis
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.
MAX_DOP = value
Gibt den maximalen Grad an Parallelität (MAXDOP) für die parallele Ausführung von Abfragen an. value muss 0 (null) oder ein positiver Integer sein. Der zulässige Bereich für value liegt zwischen 0 und 64. Die value-Standardeinstellung 0 verwendet die globale Einstellung.
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.
Hinweis
Die Workloadgruppe MAX_DOP überschreibt die Serverkonfiguration für den maximalen Grad an Parallelität und datenbankbereichsbezogene MAXDOP
Konfiguration.
Tipp
Um dies auf Abfrageebene zu erreichen, verwenden Sie den MAXDOP
Abfragehinweis. Die Festlegung des maximalen Grads an Parallelität als Abfragehinweis gilt, solange der MAX_DOP-Wert der Arbeitsauslastungsgruppe nicht überschritten wird. Wenn der MAXDOP-Wert des Abfragehinweises den mit Resource Governor konfigurierten Wert überschreitet, verwendet die SQL Server-Datenbank-Engine den MAX_DOP
-Wert von Resource Governor. Der Abfragehinweis für MAXDOP überschreibt stets die Serverkonfiguration des maximalen Grads an Parallelität.
Verwenden Sie MAXDOP
die Datenbankbereichskonfiguration, um dies auf Datenbankebene zu erreichen.
Verwenden Sie den MAXDOP-Wert (maximaler Parallelitätsgrad) der Serverkonfigurationsoption, um dies auf Serverebene zu erreichen.
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. Der Standardwert von value ist 0 (null) und lässt eine unbegrenzte Anzahl von Anforderungen zu. Wenn die maximale Anzahl gleichzeitiger Anforderungen erreicht wird, kann sich ein Benutzer dieser Gruppe zwar anmelden, wird jedoch in den Wartezustand versetzt, bis die Anzahl gleichzeitiger Anforderungen unter den angegebenen Wert gefallen ist.
USING { pool_name"default" }
Ordnet die Arbeitsauslastungsgruppe dem benutzerdefinierten Ressourcenpool zu, der durch pool_name identifiziert wird. Hierdurch wird die Arbeitsauslastungsgruppe im Endeffekt im Ressourcenpool platziert. Wenn pool_name nicht bereitgestellt wird oder wenn das USING-Argument nicht verwendet wird, wird die Arbeitsauslastungsgruppe in den vordefinierten Resource Governor-Standardpool eingefügt.
"default"
ist ein reserviertes Wort und muss bei der Verwendung mit USING in Anführungszeichen (""
) oder Klammern ([]
) eingeschlossen werden.
Hinweis
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.
EXTERNAL external_pool_name | "default"
Gilt für: SQL Server 2016 (13.x) und höher.
Die Arbeitsauslastungsgruppe kann einen externen Ressourcenpool angeben. Sie können eine Arbeitsauslastungsgruppe definieren und zwei Pools zuordnen:
- Ein Ressourcenpool für SQL Server-Arbeitsauslastungen und -Abfragen
- Ein externer Ressourcenpool für externe Prozesse. Weitere Informationen finden Sie unter sp_execute_external_script (Transact-SQL).
Bemerkungen
Wenn REQUEST_MEMORY_GRANT_PERCENT
verwendet wird, kann die Indexerstellung verwendet werden, um mehr Arbeitsbereichsspeicher als ursprünglich zugewiesen zu verwenden, damit eine bessere Leistung erzielt wird. Diese besondere Verarbeitung wird von Resource Governor in SQL Server unterstützt. Die Zuweisung anfänglichen und zusätzlichen Arbeitsspeichers wird jedoch durch den Ressourcenpool und die Einstellungen der Arbeitsauslastungsgruppe begrenzt.
Der Grenzwert MAX_DOP
wird taskbezogen festgelegt. Dieser Grenzwert gilt nicht pro Anforderung oder pro Abfrage. Das bedeutet, dass während einer parallelen Abfrageausführung eine einzelne Anforderung mehrere Tasks erzeugen kann, die einem Scheduler zugeordnet sind. Weitere Informationen finden Sie im Handbuch zur Thread- und Taskarchitektur.
Wenn MAX_DOP
verwendet wird und die Abfrage zur Kompilierzeit als seriell markiert ist, kann sie zur Laufzeit nicht wieder in parallel geändert werden, und zwar unabhängig von der Arbeitsauslastungsgruppe oder Serverkonfigurationseinstellung. Nach der Konfiguration von MAX_DOP
kann dieser Wert nur bei Arbeitsspeicherengpässen verringert werden. Die Neukonfiguration der Arbeitsauslastungsgruppe ist während des Wartens in der Speicherzuweisungs-Warteschlange nicht sichtbar.
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 Arbeitsauslastungsgruppe "default"
Abfragen zulässt, die die pro Abfrage festgelegte Grenze für mindestens erforderlichen Arbeitsspeicher übersteigen, können Benutzer dieselbe Indexerstellung in Arbeitsauslastungsgruppen des Typs "default"
ausführen. Voraussetzung ist, dass der Ressourcenpool "default"
über ausreichend Gesamtarbeitsspeicher verfügt, um eine solche Abfrage ausführen zu können.
Berechtigungen
Erfordert die CONTROL SERVER
-Berechtigung.
Beispiel
Erstellen Sie eine Arbeitsauslastungsgruppe namens newReports
, die Resource Governor-Standardeinstellungen verwendet und sich im Resource Governor-Standardpool befindet. Im Beispiel wird der default
-Pool angegeben, dies ist jedoch nicht erforderlich.
CREATE WORKLOAD GROUP newReports
WITH
(REQUEST_MAX_MEMORY_GRANT_PERCENT = 2.5
, REQUEST_MAX_CPU_TIME_SEC = 100
, MAX_DOP = 4)
USING "default" ;
GO
Weitere Informationen
* Azure Synapse
Analytics *
Azure Synapse Analytics
Erstellt eine Arbeitsauslastungsgruppe Arbeitsauslastungsgruppen sind Container für eine Reihe von Anforderungen und die Grundlage für die Konfiguration der Workloadverwaltung auf einem System. Mit Arbeitsauslastungsgruppen können Sie Ressourcen für die Workloadisolation reservieren und Ressourcen beibehalten, pro Anforderung definieren oder Ausführungsregeln durchsetzen. Sobald die Anweisung abgeschlossen ist, sind die Einstellungen wirksam.
Transact-SQL-Syntaxkonventionen
CREATE 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 ] )
[ ; ]
group_name
Gibt den Namen an, mit dem die Arbeitsauslastungsgruppe identifiziert werden kann. Der Name group_name ist vom Datentyp „sysname“. Dieses Argument kann bis zu 128 Zeichen lang sein und muss innerhalb der Instanz einen eindeutigen Namen haben.
MIN_PERCENTAGE_RESOURCE = value
Gibt eine garantierte minimale Ressourcenzuordnung für diese Arbeitsauslastungsgruppe an, die nicht mit anderen Arbeitsauslastungsgruppen geteilt wird. Der Arbeitsspeicher ist die einzige Ressource, die von diesem Parameter gesteuert wird. Dabei entspricht value einem Integer zwischen 0 und 100. Die Summe von min_percentage_resource darf für alle Auslastungsgruppen nicht 100 überschreiten. Der Wert für min_percentage_resource darf den von cap_percentage_resource nicht übersteigen. Es gibt effektive Mindestwerte, die pro Dienstebene zulässig sind. Weitere Informationen finden Sie unter Effektive Werte.
CAP_PERCENTAGE_RESOURCE = value
Gibt die maximale Ressourcenverwendung für alle Anforderungen in einer Arbeitsauslastungsgruppe an. Sowohl CPU- als auch Arbeitsspeicherressourcen sind durch diesen Parameter begrenzt. Der zulässige Integerbereich für value liegt zwischen 1 und 100. Der Wert für cap_percentage_resource muss den von min_percentage_resource übersteigen. Der effektive Wert für cap_percentage_resource kann reduziert werden, wenn min_percentage_resource in anderen Arbeitsauslastungsgruppen auf 0 oder höher festgelegt wird.
REQUEST_MIN_RESOURCE_GRANT_PERCENT = value
Legt die Mindestmenge von Ressourcen fest, die pro Anforderung zugeordnet werden. Der Arbeitsspeicher ist die einzige Ressource, die von diesem Parameter gesteuert wird. Hierbei ist value ein erforderlicher Parameter mit einem Gleitkommawert zwischen 0.75 und 100.00. Der Wert für request_min_resource_grant_percent muss ein Vielfaches von 0,25, ein Faktor von min_percentage_resource und weniger als cap_percentage_resource sein. Es gibt effektive Mindestwerte, die pro Dienstebene zulässig sind. Weitere Informationen finden Sie unter Effektive Werte.
Beispiel:
CREATE WORKLOAD GROUP wgSample
WITH
( MIN_PERCENTAGE_RESOURCE = 26 -- integer value
, REQUEST_MIN_RESOURCE_GRANT_PERCENT = 3.25 -- factor of 26 (guaranteed a minimum of 8 concurrency)
, CAP_PERCENTAGE_RESOURCE = 100 )
Sehen Sie sich die Werte an, die für die Ressourcenklassen als Richtlinie für request_min_resource_grant_percent verwendet werden. Die folgende Tabelle enthält die Ressourcenzuordnung für Gen2.
Ressourcenklasse | Ressourcen in Prozent |
---|---|
Smallrc | 3 % |
Mediumrc | 10 % |
Largerc | 22 % |
Xlargerc | 70 % |
REQUEST_MAX_RESOURCE_GRANT_PERCENT = value
Diese Zeile legt die Maximalmenge der Ressourcen fest, die pro Anforderung zugeordnet werden. Der Arbeitsspeicher ist die einzige Ressource, die von diesem Parameter gesteuert wird. Dabei ist value ein optionaler Dezimalparameter mit einem Standardwert, der „request_min_resource_grant_percent“ entspricht. Der Wert von value muss größer oder gleich „request_min_resource_grant_percent“ sein. Wenn der Wert von request_max_resource_grant_percent größer als request_min_resource_grant_percent ist und Systemressourcen verfügbar sind, werden einer Anforderung zusätzliche Ressourcen zugeordnet.
IMPORTANCE = { LOW | BELOW_NORMAL | NORMAL | ABOVE_NORMAL | HIGH }
Diese Zeile gibt die Standardwichtigkeit einer Anforderung für die Arbeitsauslastungsgruppe an. Für die Wichtigkeit sind folgende Einstellungen möglich, wobei NORMAL die Standardeinstellung ist:
- LOW
- BELOW_NORMAL
- NORMAL (Standard)
- ABOVE_NORMAL
- HIGH
Die Wichtigkeit, die für eine Arbeitsauslastungsgruppe festgelegt wird, entspricht der Standardwichtigkeit für alle Anforderungen in der Arbeitsauslastungsgruppe. Benutzer können die Wichtigkeit auch auf Klassifizierungsebene festlegen und somit die festgelegte Wichtigkeit der Arbeitsauslastungsgruppe überschreiben. Dadurch wird eine Differenzierung der Wichtigkeit für Anforderungen innerhalb einer Arbeitsauslastungsgruppe ermöglicht, um schneller auf nicht reservierte Ressourcen zugreifen zu können. Wenn die Summe von min_percentage_resource in den Arbeitsauslastungsgruppen weniger als 100 ist, sind nicht reservierte Ressourcen vorhanden, die nach Wichtigkeit zugewiesen werden.
QUERY_EXECUTION_TIMEOUT_SEC = value
Diese Zeile gibt die maximale Zeit in Sekunden an, für deren Dauer eine Abfrage ausgeführt werden kann, bevor sie abgebrochen wird. value muss 0 (null) oder ein positiver Integer sein. Die Standardeinstellung für value ist 0 (null). Das bedeutet, dass für die Abfrage kein Timeout eintritt. QUERY_EXECUTION_TIMEOUT_SEC zählt, sobald die Abfrage als ausgeführt erkannt wird, nicht jedoch, wenn die Abfrage in die Warteschlange eingereiht wird.
Bemerkungen
Die entsprechenden Arbeitsauslastungsgruppen für Ressourcenklassen werden aufgrund der Abwärtskompatibilität automatisch generiert. Diese vom System definierten Arbeitsauslastungsgruppen können nicht gelöscht werden. Es können acht zusätzliche benutzerdefinierte Arbeitsauslastungsgruppen erstellt werden.
Wenn eine Arbeitsauslastungsgruppe mit min_percentage_resource
größer als 0 (null) erstellt wird, wird die CREATE WORKLOAD GROUP
-Anweisung in die Warteschlange eingereiht, bis genügend Ressourcen zum Erstellen der Arbeitsauslastungsgruppe vorhanden sind.
Effektive Werte
Die Parameter min_percentage_resource
, cap_percentage_resource
, request_min_resource_grant_percent
und request_max_resource_grant_percent
haben effektive Werte, die basierend auf dem aktuellen Servicelevel und der Konfiguration anderer Arbeitsauslastungsgruppen angepasst werden.
Der request_min_resource_grant_percent
-Parameter hat einen effektiven Wert, da je nach Servicelevel minimale Ressourcen pro Abfrage benötigt werden. Beispielsweise sind auf dem niedrigsten Servicelevel (DW100c) mindestens 25 % der Ressourcen pro Anforderung erforderlich. Wenn die Workloadgruppe mit 3 % request_min_resource_grant_percent
und request_max_resource_grant_percent
konfiguriert ist, passen sich die effektiven Werte für beide Parameter auf 25 % an, wenn die Instanz gestartet wird. Wenn die Instanz zu DW1000c hochskaliert wird, sind die konfigurierten und effektiven Werte für beide Parameter 3 %, da 3 % der unterstützte Mindestwert für diesen Servicelevel ist. Wenn die Instanz höher als DW1000c skaliert wird, bleiben die konfigurierten und effektiven Werte für beide Parameter bei 3 %. In der folgenden Tabelle finden Sie weitere Informationen zu effektiven Werten bei verschiedenen Servicelevels.
Dienstebene | Niedrigster effektiver Wert für REQUEST_MIN_RESOURCE_GRANT_PERCENT | Maximale Anzahl gleichzeitiger Abfragen |
---|---|---|
DW100c | 25 % | 4 |
DW200c | 12,5 % | 8 |
DW300c | 8 % | 12 |
DW400c | 6,25 % | 16 |
DW500c | 5 % | 20 |
DW1000c | 3 % | 32 |
DW1500c | 3 % | 32 |
DW2000c | 2 % | 48 |
DW2500c | 2 % | 48 |
DW3000c | 1,5 % | 64 |
DW5000c | 1,5 % | 64 |
DW6000c | 0,75 % | 128 |
DW7500c | 0,75 % | 128 |
DW10000c | 0,75 % | 128 |
DW15000c | 0,75 % | 128 |
DW30000c | 0,75 % | 128 |
Der min_percentage_resource
-Parameter muss größer oder gleich dem effektiven request_min_resource_grant_percent
sein. Bei einer Workloadgruppe, deren Wert für min_percentage_resource
kleiner als der effektive Wert von min_percentage_resource
ist, wird der Wert zur Laufzeit auf 0 (null) angepasst. In diesem Fall sind die für min_percentage_resource
konfigurierten Ressourcen für alle Arbeitsauslastungsgruppen freigegeben. Beispielsweise hätte die Workloadgruppe wgAdHoc
mit einem Wert für min_percentage_resource
von 10 % unter DW1000c einen effektiven Wert für min_percentage_resource
von 10 % (3 % ist der Mindestwert bei DW1000c). Bei DW100c hätte wgAdhoc
einen effektiven Wert für min_percentage_resource von 0 %. Die für wgAdhoc
konfigurierten 10 % würden für alle Arbeitsauslastungsgruppen freigegeben werden.
Der Parameter cap_percentage_resource
hat ebenfalls einen effektiven Wert. Wenn eine Arbeitsauslastungsgruppe wgAdhoc
mit einem Wert von 100 % für cap_percentage_resource
konfiguriert wird und eine andere Arbeitsauslastungsgruppe wgDashboards
mit einem Wert von 25 % für min_percentage_resource
, wird der effektive Wert von cap_percentage_resource
für wgAdhoc
75 %.
Die Laufzeitwerte für Ihre Arbeitsauslastungsgruppe lassen sich am einfachsten erklären, indem Sie die Systemsicht sys.dm_workload_management_workload_groups_stats abfragen.
Berechtigungen
Erfordert die CONTROL DATABASE
-Berechtigung