Delen via


ALTER RESOURCE POOL (Transact-SQL)

van toepassing op:SQL ServerAzure SQL Managed Instance

Hiermee wijzigt u een bestaande resource governor resourcegroepconfiguratie voor een database-engine-exemplaar.

Notitie

Voor Azure SQL Managed Instance moet u zich in de context van de master-database bevinden om de configuratie van resource governor te wijzigen.

Transact-SQL syntaxisconventies

Syntaxis

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]

Argumenten

{ pool_name | [standaard] }

Is de naam van een bestaande door de gebruiker gedefinieerde resourcegroep of de ingebouwde default resourcegroep.

default moet tussen haakjes ([]) of aanhalingstekens ("") staan wanneer deze worden gebruikt met ALTER RESOURCE POOL om een conflict met DEFAULTte voorkomen. Dit is een systeem gereserveerd woord. Zie Database-id'svoor meer informatie.

Ingebouwde resourcegroepen en workloadgroepen gebruiken alle kleine letters, zoals default. Gebruik de kleine letters default op servers die gebruikmaken van een hoofdlettergevoelige sortering. Servers met hoofdlettergevoelige sortering behandelen default, Defaulten DEFAULT als dezelfde waarde.

MIN_CPU_PERCENT = waarde

Hiermee geeft u de gegarandeerde gemiddelde CPU-bandbreedte voor alle aanvragen in de resourcegroep wanneer er SPRAKE is van CPU-conflicten. waarde is een geheel getal met een standaardinstelling van 0. Het toegestane bereik voor waarde ligt tussen 0 en 100.

MAX_CPU_PERCENT = waarde

Hiermee geeft u de maximale gemiddelde CPU-bandbreedte op die alle aanvragen in de resourcegroep ontvangen wanneer er sprake is van CPU-conflicten. waarde is een geheel getal met een standaardinstelling van 100. Het toegestane bereik voor waarde ligt tussen 1 en 100.

CAP_CPU_PERCENT = waarde

Van toepassing op: SQL Server 2012 (11.x) en hoger.

Hiermee geeft u een vaste limiet op voor de CPU-bandbreedte die alle aanvragen in de resourcegroep ontvangen. Hiermee wordt het maximale CPU-bandbreedteniveau beperkt tot hetzelfde als de opgegeven waarde. waarde is een geheel getal met een standaardinstelling van 100. Het toegestane bereik voor waarde ligt tussen 1 en 100.

Notitie

Vanwege de statistische aard van CPU-governance ziet u mogelijk af en toe korte pieken die de waarde overschrijden die is opgegeven in CAP_CPU_PERCENT.

AFFINITEIT {SCHEDULER = AUTO | ( <scheduler_range_spec> ) | NUMANODE = (<NUMA_node_range_spec>)}

Van toepassing op: SQL Server 2012 (11.x) en hoger.

Koppel de resourcegroep aan specifieke planners. De standaardwaarde is AUTO.

Als u <scheduler_range_spec> opgeeft voor AFFINITY SCHEDULER affiniteit met de resourcegroep aan de database-engineplanners die zijn geïdentificeerd door de opgegeven id's. Deze id's worden toegewezen aan de waarden in de kolom scheduler_id in sys.dm_os_schedulers.

Als u <NUMA_node_range_spec> opgeeft voor AFFINITY NUMANODE affiniteiten maakt met de resourcegroep de database-engineplanners die zijn toegewezen aan de logische CPU's die overeenkomen met het opgegeven NUMA-knooppunt of een bereik van knooppunten. U kunt de volgende Transact-SQL query gebruiken om de toewijzing tussen de fysieke NUMA-configuratie en de database-engineplanner-id's te detecteren.

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 = waarde

Hiermee geeft u de minimale hoeveelheid geheugen voor de querywerkruimte op die is gereserveerd voor de resourcegroep die niet kan worden gedeeld met andere resourcegroepen. waarde is een geheel getal met een standaardinstelling van 0. Het toegestane bereik voor waarde is van 0 tot 100.

MAX_MEMORY_PERCENT = waarde

Hiermee geeft u de maximale hoeveelheid querywerkruimtegeheugen op die aanvragen in deze resourcegroep kunnen gebruiken. waarde is een geheel getal met een standaardinstelling van 100. Het toegestane bereik voor waarde ligt tussen 1 en 100.

MIN_IOPS_PER_VOLUME = waarde

Van toepassing op: SQL Server 2014 (12.x) en hoger.

Hiermee geeft u de minimale I/O-bewerkingen per seconde (IOPS) per schijfvolume op die voor de resourcegroep moeten worden gereserveerd. Het toegestane bereik voor waarde is van 0 tot en met 2^31-1 (2.147.483.647). Geef 0 op om geen minimum voor de pool aan te geven. De standaardwaarde is 0.

MAX_IOPS_PER_VOLUME = waarde

Van toepassing op: SQL Server 2014 (12.x) en hoger.

Hiermee geeft u het maximum aantal I/O-bewerkingen per seconde (IOPS) per schijfvolume op om de resourcegroep toe te staan. Het toegestane bereik voor waarde is van 0 tot en met 2^31-1 (2.147.483.647). Geef 0 op om een IOPS-limiet voor de pool te verwijderen. De standaardwaarde is 0.

Als de MAX_IOPS_PER_VOLUME voor een pool is ingesteld op 0, wordt de pool helemaal niet door IO beheerd en kan alle IOPS in het systeem worden gebruikt, zelfs als andere pools MIN_IOPS_PER_VOLUME ingesteld. Voor dit geval raden we u aan de MAX_IOPS_PER_VOLUME-waarde voor deze pool in te stellen op een hoog getal (bijvoorbeeld de maximumwaarde 2^31-1) om deze pool io-beheerd te maken en de IOPS-reserveringen te respecteren die mogelijk bestaan voor andere pools.

Opmerkingen

De som van MIN_CPU_PERCENT of MIN_MEMORY_PERCENT voor alle resourcegroepen mag niet groter zijn dan 100 procent.

MIN_IOPS_PER_VOLUME en MAX_IOPS_PER_VOLUME het minimum en maximum aantal IOS's per seconde opgeven. De IOs kunnen lees- of schrijfbewerkingen zijn en kunnen van elke grootte zijn. Daarom kan met dezelfde IOPS-limieten de minimale en maximale IO-doorvoer variëren, afhankelijk van de combinatie van IO-grootten in de workload.

De waarden voor MAX_CPU_PERCENT en MAX_MEMORY_PERCENT moeten respectievelijk groter zijn dan of gelijk zijn aan de waarden voor MIN_CPU_PERCENT en MIN_MEMORY_PERCENT.

CAP_CPU_PERCENT verschilt van MAX_CPU_PERCENT in die werkbelastingen die aan de pool zijn gekoppeld, kunnen cpu-capaciteit boven de waarde van MAX_CPU_PERCENT gebruiken als deze beschikbaar is, maar niet boven de waarde van CAP_CPU_PERCENT. Hoewel er mogelijk korte pieken zijn die hoger zijn dan CAP_CPU_PERCENT, kunnen workloads gedurende langere tijd niet langer zijn dan CAP_CPU_PERCENT, zelfs niet wanneer er extra CPU-capaciteit beschikbaar is.

Het totale CPU-percentage voor elk geaffinaliseerd onderdeel (scheduler(s) of NUMA-knooppunt(en) mag niet groter zijn dan 100 procent.

Zie Resource governor en Resource Governor-resourcegroepvoor meer informatie.

Plannen in cache

Wanneer u een plan wijzigt dat van invloed is op de instelling, wordt de nieuwe instelling pas van kracht in eerder in de cache geplaatste plannen na het uitvoeren van DBCC FREEPROCCACHE (<pool_name>), waarbij <pool_name> de naam is van een resource governor-resourcegroep.

  • Als u AFFINITY wijzigt van meerdere planners in één planner, is het uitvoeren van DBCC FREEPROCCACHE niet vereist omdat parallelle plannen in de seriële modus kunnen worden uitgevoerd. Een dergelijk plan kan echter minder efficiënt zijn dan een plan dat is gecompileerd als een serieel plan.
  • Als u AFFINITY wijzigt van één planner in meerdere planners, is het uitvoeren van DBCC FREEPROCCACHE niet vereist. Seriële plannen kunnen echter niet parallel worden uitgevoerd, dus als u de desbetreffende cache wist, kunnen nieuwe plannen mogelijk worden gecompileerd met behulp van parallelle uitvoering.

Waarschuwing

Het wissen van plannen in de cache van een resourcegroep die is gekoppeld aan meer dan één workloadgroep, is van invloed op alle workloadgroepen met behulp van de door de gebruiker gedefinieerde resourcegroep die is geïdentificeerd door <pool_name>.

Machtigingen

Hiervoor is de machtiging CONTROL SERVER vereist.

Voorbeelden

In het volgende voorbeeld blijven alle huidige resourcegroepinstellingen voor de default-pool, met uitzondering van MAX_CPU_PERCENT, die wordt gewijzigd in 25 procent.

ALTER RESOURCE POOL [default] WITH (MAX_CPU_PERCENT = 25);

ALTER RESOURCE GOVERNOR RECONFIGURE;

In het volgende voorbeeld wordt de adhocPool resourcegroep als volgt gewijzigd:

  • Reserveert 10 procent van de CPU en 5 procent van het geheugen van de querywerkruimte met respectievelijk MIN_CPU_PERCENT en MIN_MEMORY_PERCENT.
  • Hiermee stelt u een geheugenlimiet van 15 procent voor de querywerkruimte in met behulp van MAX_MEMORY_PERCENT.
  • Hiermee stelt u een limiet van 20 procent voor zachte CPU in op respectievelijk een harde CPU-limiet van 30 procent met MAX_CPU_PERCENT en CAP_CPU_PERCENT.
  • Affiniteit tussen de pool en twee bereiken van logische CPU's (0 tot 63 en 128 tot 191) met behulp van AFFINITY SCHEDULER.

Van toepassing op: SQL Server 2012 (11.x) en hoger.

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;