CREATE RESOURCE POOL (Transact-SQL)
Gilt für: SQL Server Azure SQL Managed Instance
Erstellt einen Ressourcenpool für die Ressourcenkontrolle in SQL Server. Ein Ressourcenpool stellt eine Teilmenge der physischen Ressourcen (Arbeitsspeicher, CPUs und E/A) einer Instanz der Datenbank-Engine dar. Mit der Ressourcenkontrolle kann ein Datenbankadministrator Serverressourcen auf Ressourcenpools verteilen, bis zu maximal 64 Pools. Die Ressourcenkontrolle 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 Von den SQL Server 2016-Editionen unterstützte Funktionen.
Transact-SQL-Syntaxkonventionen
Syntax
CREATE RESOURCE POOL pool_name
[ 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
Der benutzerdefinierte Name für den Ressourcenpool. pool_name ist alphanumerisch, kann bis zu 128 Zeichen enthalten, muss innerhalb einer Instanz von SQL Server eindeutig sein und muss den Regeln für Bezeichner entsprechen.
MIN_CPU_PERCENT =value
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 = value
Gibt die maximale durchschnittliche CPU-Bandbreite an, die allen Anforderungen im Ressourcenpool zugewiesen wird, wenn CPU-Konflikte bestehen. value ist eine ganze Zahl mit dem Standardwert 100. Der zulässige Bereich für value liegt zwischen 1 und 100.
CAP_CPU_PERCENT =value
Gilt für: SQL Server 2012 (11.x) und höher.
Legt eine feste Obergrenze für die CPU-Bandbreite fest, die für alle Anforderungen im Ressourcenpool gilt. Beschränkt die maximale CPU-Bandbreitenstufe auf den angegebenen Wert. value ist eine ganze Zahl mit dem Standardwert 100. Der zulässige Bereich für value liegt zwischen 1 und 100.
AFFINITY {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.
AFFINITY SCHEDULER = (<Scheduler_range_spec>) ordnet den Ressourcenpool den von den angegebenen IDs identifizierten SQL Server-Zeitplänen zu. Den Werten in der scheduler_id-Spalte in sys.dm_os_schedulers (Transact-SQL) werden diese IDs zugeordnet.
Wenn Sie AFFINITY NAMANODE = (<NUMA_node_range_spec>) verwenden, wird der Ressourcenpool in den SQL Server-Zeitplanungsmodulen zusammengefasst, die den physischen CPUs zugeordnet werden, die dem angegebenen NUMA-Knoten oder -Knotenbereich entsprechen. Sie können die Zuordnung zwischen der physischen NUMA-Konfiguration und den SQL Server-Zeitplanungsmodul-IDs mithilfe der folgenden Transact-SQL-Abfrage 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 =value
Gibt den Mindestarbeitsspeicher an, der für diesen Ressourcenpool reserviert ist und nicht gemeinsam mit anderen Ressourcenpools verwendet werden kann. value ist eine ganze Zahl mit dem Standardwert 0. Der zulässige Bereich für value liegt zwischen 0 und 100.
MAX_MEMORY_PERCENT =value
Gibt den gesamten Serverspeicher an, der für Anforderungen in diesem Ressourcenpool verwendet werden kann. 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 =value
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). 0 gibt an, dass kein minimaler Schwellenwert für den Pool gilt. Die Standardeinstellung ist 0.
MAX_IOPS_PER_VOLUME =value
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). 0 gibt einen unbegrenzten Schwellenwert für den Pool an. Die Standardeinstellung ist 0.
Wenn MAX_IOPS_PER_VOLUME
für einen Pool auf den Wert 0 festgelegt ist, wird der Pool überhaupt nicht kontrolliert und kann alle IOPS im System annehmen, selbst wenn für andere Pools MIN_IOPS_PER_VOLUME festgelegt ist. Für diesen Fall wird empfohlen, dass Sie den MAX_IOPS_PER_VOLUME
-Wert für diesen Pool auf eine höhere Zahl festlegen (z. B. auf den Maximalwert 2^31-1), wenn E/A-Vorgänge für diesen Pool kontrolliert werden sollen.
Bemerkungen
MIN_IOPS_PER_VOLUME
und MAX_IOPS_PER_VOLUME
geben das Minimum und das Maximum für Lese- und Schreibvorgänge pro Sekunde an. Die Lese- und Schreibvorgänge können eine beliebige Größe haben und geben daher keinen Aufschluss über den minimalen bzw. maximalen Durchsatz.
Die Werte für MAX_CPU_PERCENT
und MAX_MEMORY_PERCENT
müssen größer als oder gleich den Werten für MIN_CPU_PERCENT
bzw. MIN_MEMORY_PERCENT
sein.
CAP_CPU_PERCENT
unterscheidet sich von MAX_CPU_PERCENT
dahingehend, dass die dem Pool zugeordneten Workloads eine CPU-Kapazität nutzen können, die den Wert von MAX_CPU_PERCENT
, falls vorhanden, übersteigt, aber nicht über den Wert von CAP_CPU_PERCENT
hinausgeht.
Der gesamte CPU-Prozentsatz für jede zugeordnete Komponente (Zeitplanungsmodul(e) oder NUMA-Knoten) darf 100 % nicht überschreiten.
Berechtigungen
Erfordert die CONTROL SERVER
-Berechtigung.
Beispiele
1. Zeigt, wie Sie einen Ressourcenpool erstellen
In diesem Beispiel wurde ein Ressourcenpool namens „bigPool“ erstellt. Dieser Pool verwendet die Standardeinstellungen der Ressourcenkontrolle.
CREATE RESOURCE POOL bigPool;
GO
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO
2. CAP_CPU_PERCENT auf eine feste Obergrenze festlegen und AFFINITY SCHEDULER festlegen
Legen Sie die CAP_CPU_PERCENT auf eine feste Obergrenze von 30 % fest, und legen Sie AFFINITY SCHEDULER auf einen Bereich von 0 bis 63, 128 bis 191 fest.
Gilt für: SQL Server 2012 (11.x) und höher.
CREATE RESOURCE POOL PoolAdmin
WITH (
MIN_CPU_PERCENT = 10,
MAX_CPU_PERCENT = 20,
CAP_CPU_PERCENT = 30,
AFFINITY SCHEDULER = (0 TO 63, 128 TO 191),
MIN_MEMORY_PERCENT = 5,
MAX_MEMORY_PERCENT = 15
);
3. MIN_IOPS_PER_VOLUME und MAX_IOPS_PER_VOLUME festlegen
Legen Sie MIN_IOPS_PER_VOLUME auf 20 und MAX_IOPS_PER_VOLUME auf 100 fest. Diese Werte bestimmen die physischen E/A-Lese- und Schreibvorgänge, die für den Ressourcenpool verfügbar sind.
Gilt für: SQL Server 2014 (12.x) und höher.
CREATE RESOURCE POOL PoolAdmin
WITH (
MIN_IOPS_PER_VOLUME = 20,
MAX_IOPS_PER_VOLUME = 100
);
Weitere Informationen
ALTER RESOURCE POOL (Transact-SQL)
DROP RESOURCE POOL (Transact-SQL)
CREATE WORKLOAD GROUP (Transact-SQL)
ALTER WORKLOAD GROUP (Transact-SQL)
DROP WORKLOAD GROUP (Transact-SQL)
ALTER RESOURCE GOVERNOR (Transact-SQL)
Ressourcenpool für die Ressourcenkontrolle
Erstellen eines Ressourcenpools