ALTER RESOURCE POOL (Transact-SQL)
Gilt für:SQL ServerAzure SQL Managed Instance
Ändert eine vorhandene Ressourcenverwaltung Ressourcenpoolkonfiguration für eine Datenbankmodulinstanz.
Hinweis
Für azure SQL Managed Instance müssen Sie sich im Kontext der master
-Datenbank befinden, um die Konfiguration der Ressourcenverwaltung zu ändern.
Transact-SQL-Syntaxkonventionen
Syntax
ALTER RESOURCE POOL { pool_name | [default] }
[WITH
( [ MIN_CPU_PERCENT = value ]
[ [ , ] MAX_CPU_PERCENT = value ]
[ [ , ] CAP_CPU_PERCENT = value ]
[ [ , ] AFFINITY {
SCHEDULER = AUTO
| ( <scheduler_range_spec> )
| NUMANODE = ( <NUMA_node_range_spec> )
}]
[ [ , ] MIN_MEMORY_PERCENT = value ]
[ [ , ] MAX_MEMORY_PERCENT = value ]
[ [ , ] MIN_IOPS_PER_VOLUME = value ]
[ [ , ] MAX_IOPS_PER_VOLUME = value ]
)]
[;]
<scheduler_range_spec> ::=
{SCHED_ID | SCHED_ID TO SCHED_ID}[,...n]
<NUMA_node_range_spec> ::=
{NUMA_node_ID | NUMA_node_ID TO NUMA_node_ID}[,...n]
Argumente
{ pool_name | [Standard] }
Ist der Name eines vorhandenen benutzerdefinierten Ressourcenpools oder des integrierten default
Ressourcenpools.
default
müssen in Klammern ([]
) oder Anführungszeichen (""
) stehen, wenn sie mit ALTER RESOURCE POOL
verwendet werden, um einen Konflikt mit DEFAULT
zu vermeiden, bei dem es sich um ein reserviertes Systemwort handelt. Weitere Informationen finden Sie unter Datenbankbezeichner.
Integrierte Ressourcenpools und Workloadgruppen verwenden alle Kleinbuchstaben, z. B. default
. Verwenden Sie die Kleinschreibung default
auf Servern, auf denen eine Sortierung zwischen Groß- und Kleinschreibung verwendet wird. Server mit nicht beachteter Sortierung behandeln default
, Default
und DEFAULT
mit demselben Wert.
MIN_CPU_PERCENT = Wert
Gibt die garantierte durchschnittliche CPU-Bandbreite für alle Anforderungen im Ressourcenpool an, wenn CPU-Konflikte bestehen. value ist eine ganze Zahl mit dem Standardwert 0. Der zulässige Bereich für value liegt zwischen 0 und 100.
MAX_CPU_PERCENT = Wert
Gibt die maximale durchschnittliche CPU-Bandbreite an, die alle Anforderungen im Ressourcenpool empfangen, wenn ein CPU-Inhalt vorhanden ist. value ist eine ganze Zahl mit dem Standardwert 100. Der zulässige Bereich für value liegt zwischen 1 und 100.
CAP_CPU_PERCENT = Wert
Gilt für: SQL Server 2012 (11.x) und höher.
Gibt eine harte Obergrenze für die CPU-Bandbreite an, die alle Anforderungen im Ressourcenpool empfangen. Beschränkt die maximale CPU-Bandbreitenstufe auf denselben Wert wie der angegebene Wert. value ist eine ganze Zahl mit dem Standardwert 100. Der zulässige Bereich für value liegt zwischen 1 und 100.
Hinweis
Aufgrund der statistischen Art der CPU-Governance können Sie gelegentlich kurze Spitzen feststellen, die den in CAP_CPU_PERCENT
angegebenen Wert überschreiten.
AFFINITÄT {SCHEDULER = AUTO | ( <scheduler_range_spec> ) | NUMANODE = (<NUMA_node_range_spec>)}
Gilt für: SQL Server 2012 (11.x) und höher.
Fügt den Ressourcenpool an bestimmte Zeitplanungsmodule an. Der Standardwert ist AUTO
.
Wenn Sie <scheduler_range_spec>
für AFFINITY SCHEDULER
festlegen, wird der Ressourcenpool mit den von den angegebenen IDs identifizierten Planern des Datenbankmoduls affinitiert. Diese IDs werden den Werten in der Spalte scheduler_id
in sys.dm_os_schedulerszugeordnet.
Wenn Sie <NUMA_node_range_spec>
für AFFINITY NUMANODE
festlegen, wird der Ressourcenpool mit den Datenbankmodulplanern verbunden, die den logischen CPUs zugeordnet sind, die dem angegebenen NUMA-Knoten oder einem Bereich von Knoten entsprechen. Sie können die folgende Transact-SQL Abfrage verwenden, um die Zuordnung zwischen der physischen NUMA-Konfiguration und den Scheduler-IDs des Datenbankmoduls zu ermitteln.
SELECT osn.memory_node_id AS numa_node_id,
sc.cpu_id,
sc.scheduler_id
FROM sys.dm_os_nodes AS osn
INNER JOIN sys.dm_os_schedulers AS sc
ON osn.node_id = sc.parent_node_id
AND
sc.scheduler_id < 1048576;
MIN_MEMORY_PERCENT = Wert
Gibt die Mindestmenge des Für den Ressourcenpool reservierten Abfragearbeitsbereichsspeichers an, der nicht für andere Ressourcenpools freigegeben werden kann. value ist eine ganze Zahl mit dem Standardwert 0. Der zulässige Bereich für Wert liegt zwischen 0 und 100.
MAX_MEMORY_PERCENT = Wert
Gibt die maximale Menge des Abfragearbeitsbereichsspeichers an, den Anforderungen in diesem Ressourcenpool verwenden können. value ist eine ganze Zahl mit dem Standardwert 100. Der zulässige Bereich für value liegt zwischen 1 und 100.
MIN_IOPS_PER_VOLUME = Wert
Gilt für: SQL Server 2014 (12.x) und höher.
Gibt die minimalen E/A-Vorgänge pro Sekunde (IOPS) pro Datenträgervolume an, die für den Ressourcenpool reserviert werden sollen. Der zulässige Bereich für value liegt zwischen 0 und 2^31-1 (2.147.483.647). Geben Sie "0" an, um kein Minimum für den Pool anzugeben. Die Standardeinstellung ist 0.
MAX_IOPS_PER_VOLUME = Wert
Gilt für: SQL Server 2014 (12.x) und höher.
Gibt die maximalen E/A-Vorgänge pro Sekunde (IOPS) pro Datenträgervolume an, die für den Ressourcenpool zulässig sein sollen. Der zulässige Bereich für value liegt zwischen 0 und 2^31-1 (2.147.483.647). Geben Sie 0 an, um einen IOPS-Grenzwert für den Pool zu entfernen. Die Standardeinstellung ist 0.
Wenn die MAX_IOPS_PER_VOLUME
für einen Pool auf 0 festgelegt ist, wird der Pool überhaupt nicht io-gesteuerte und kann alle IOPS im System übernehmen, auch wenn andere Pools MIN_IOPS_PER_VOLUME
festgelegt haben. In diesem Fall wird empfohlen, den MAX_IOPS_PER_VOLUME
Wert für diesen Pool auf eine hohe Zahl (z. B. den Maximalwert 2^31-1) festzulegen, um diesen Pool E/A-gesteuerte zu machen und die IOPS-Reservierungen zu berücksichtigen, die für andere Pools vorhanden sein könnten.
Bemerkungen
Die Summe der MIN_CPU_PERCENT
oder MIN_MEMORY_PERCENT
für alle Ressourcenpools darf 100 Prozent nicht überschreiten.
MIN_IOPS_PER_VOLUME
und MAX_IOPS_PER_VOLUME
die mindest- und maximal zulässigen IOs pro Sekunde angeben. Die IOs können entweder gelesen oder geschrieben werden und können beliebig groß sein. Daher können bei den gleichen IOPS-Grenzwerten der minimale und der maximale E/A-Durchsatz je nach Mischung aus E/A-Größen in der Workload variieren.
Die Werte für MAX_CPU_PERCENT
und MAX_MEMORY_PERCENT
müssen größer oder gleich den Werten für MIN_CPU_PERCENT
bzw. MIN_MEMORY_PERCENT
sein.
CAP_CPU_PERCENT
unterscheidet sich von MAX_CPU_PERCENT
darin, dass dem Pool zugeordnete Workloads CPU-Kapazität über dem Wert der MAX_CPU_PERCENT
verwenden können, wenn sie verfügbar ist, aber nicht über dem Wert von CAP_CPU_PERCENT
. Obwohl es kurze Spitzen gibt, die höher als CAP_CPU_PERCENT
sind, können Workloads CAP_CPU_PERCENT
für längere Zeiträume nicht überschreiten, auch wenn zusätzliche CPU-Kapazität verfügbar ist.
Der gesamte CPU-Prozentsatz für jede affinitierte Komponente (Scheduler oder NUMA-Knoten) darf 100 Prozent nicht überschreiten.
Weitere Informationen finden Sie unter Ressourcengouverneur und Ressourcenverwaltungsressourcenpool.
Zwischengespeicherte Pläne
Wenn Sie einen Plan ändern, der sich auf die Einstellung auswirkt, wird die neue Einstellung nur in zuvor zwischengespeicherten Plänen wirksam, nachdem DBCC FREEPROCCACHE (<pool_name>)
ausgeführt wurde, wobei <pool_name>
der Name eines Ressourcenverwaltungsressourcenpools ist.
- Wenn Sie
AFFINITY
von mehreren Planern in einen einzelnen Planer ändern, ist die AusführungDBCC FREEPROCCACHE
nicht erforderlich, da parallele Pläne im seriellen Modus ausgeführt werden können. Ein solcher Plan kann jedoch weniger effizient sein als ein Plan, der als serieller Plan kompiliert wurde. - Wenn Sie
AFFINITY
von einem einzelnen Planer in mehrere Scheduler ändern, ist die AusführungDBCC FREEPROCCACHE
nicht erforderlich. Serielle Pläne können jedoch nicht parallel ausgeführt werden, sodass durch das Löschen des jeweiligen Caches neue Pläne potenziell mit Parallelität kompiliert werden können.
Warnung
Das Löschen zwischengespeicherter Pläne aus einem Ressourcenpool, der mehreren Workloadgruppen zugeordnet ist, wirkt sich auf alle Workloadgruppen aus, wobei der durch <pool_name>
identifizierte benutzerdefinierte Ressourcenpool verwendet wird.
Berechtigungen
Erfordert die berechtigung CONTROL SERVER
.
Beispiele
Im folgenden Beispiel werden alle aktuellen Ressourcenpooleinstellungen für den default
-Pool beibehalten, mit Ausnahme von MAX_CPU_PERCENT
, die auf 25 Prozent geändert werden.
ALTER RESOURCE POOL [default] WITH (MAX_CPU_PERCENT = 25);
ALTER RESOURCE GOVERNOR RECONFIGURE;
Im folgenden Beispiel wird der adhocPool
Ressourcenpool wie folgt geändert:
- Reserviert 10 Prozent der CPU und 5 Prozent des Abfragearbeitsbereichsspeichers mit
MIN_CPU_PERCENT
bzw.MIN_MEMORY_PERCENT
. - Legt einen Speichergrenzwert von 15 Prozent des Abfragearbeitsbereichs mithilfe von
MAX_MEMORY_PERCENT
fest. - Legt eine 20 Prozent weiche CPU-Obergrenze mit
MAX_CPU_PERCENT
bzw.CAP_CPU_PERCENT
fest. - Affinitizes the pool to two ranges of logical CPUs (0 to 63 and 128 to 191) using
AFFINITY SCHEDULER
.
Gilt für: SQL Server 2012 (11.x) und höher.
ALTER RESOURCE POOL adhocPool
WITH (
MIN_CPU_PERCENT = 10,
MAX_CPU_PERCENT = 20,
CAP_CPU_PERCENT = 30,
MIN_MEMORY_PERCENT = 5,
MAX_MEMORY_PERCENT = 15,
AFFINITY SCHEDULER = (0 TO 63, 128 TO 191)
);
ALTER RESOURCE GOVERNOR RECONFIGURE;