Freigeben über


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 DEFAULTzu 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, Defaultund 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_PERCENTangegebenen 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_PERCENTsein.

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_PERCENTsind, 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ührung DBCC 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ührung DBCC 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_PERCENTfest.
  • 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;