CREATE RESOURCE POOL (Transact-SQL)
Gilt für:SQL ServerAzure SQL Managed Instance
Erstellt einen Ressourcengouverneur Ressourcenpools. Ein Ressourcenpool stellt eine Teilmenge der physischen Ressourcen (CPU, Arbeitsspeicher und E/A) einer Datenbankmodulinstanz dar. Mithilfe des Ressourcengouverneurs können Sie Serverressourcen zwischen Ressourcenpools bis zu maximal 64 Pools reservieren oder einschränken.
Ressourcenkontrolle ist in jeder Edition von SQL Server nicht verfügbar. Eine Liste der Features, die von den Editionen von SQL Server unterstützt werden, finden Sie unter Editionen und unterstützten Features von SQL Server 2022.
Anmerkung
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
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 alphanumerisch ist, kann bis zu 128 Zeichen lang sein, muss innerhalb einer Datenbankmodulinstanz eindeutig sein und muss die Regeln für Datenbankbezeichnereinhalten.
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 den angegebenen Wert. value ist eine ganze Zahl mit dem Standardwert 100. Der zulässige Bereich für value liegt zwischen 1 und 100.
Anmerkung
Aufgrund der statistischen Art der CPU-Governance können Sie gelegentlich kurze Spitzen feststellen, die den in CAP_CPU_PERCENT
angegebenen Wert überschreiten.
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
.
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 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. 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.
Berechtigungen
Erfordert die berechtigung CONTROL SERVER
.
Beispiele
Weitere Konfigurationsbeispiele für Ressourcenkontrolle finden Sie unter Konfigurationsbeispiele für Ressourcengouverneur und bewährte Methoden.
Erstellen eines Ressourcenpools
In diesem Beispiel wurde ein Ressourcenpool mit dem Namen bigPool
erstellt. Dieser Pool verwendet die Standardeinstellungen für die Ressourcenkontrolle.
CREATE RESOURCE POOL bigPool;
ALTER RESOURCE GOVERNOR RECONFIGURE;
Festlegen von CPU- und Arbeitsspeicherreservierungen und -beschränkungen
In diesem Beispiel wird der adhocPool
Ressourcenpool wie folgt konfiguriert:
- 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.
CREATE 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)
);
Festlegen der IOPS-Reservierung und des Grenzwerts
In diesem Beispiel werden 200 IOPS pro Volume für den Pool mit MIN_IOPS_PER_VOLUME
reserviert, und die IOPS pro Volume werden mit MAX_IOPS_PER_VOLUME
auf 1000 begrenzt. Diese Werte steuern die gesamten physischen E/A-Lese- und Schreibvorgänge, die für Anforderungen mit dem Ressourcenpool verfügbar sind.
Gilt für: SQL Server 2014 (12.x) und höher.
CREATE RESOURCE POOL PoolAdmin
WITH (
MIN_IOPS_PER_VOLUME = 200,
MAX_IOPS_PER_VOLUME = 1000
);
Verwandte Inhalte
- Lernprogramm: Konfigurationsbeispiele für Ressourcenverwaltung und bewährte Methoden
- Ressourcengouverneur
- Ressourcenverwaltungsressourcenpool
- Erstellen eines Ressourcenpools
- ALTER RESOURCE POOL
- DROP-RESSOURCENPOOL-
- ERSTELLEN EINER WORKLOADGRUPPE
- ALTER WORKLOAD GROUP
- DROP WORKLOAD GROUP
- ALTER RESOURCE GOVERNOR