ALTER RESOURCE POOL (Transact-SQL)
van toepassing op:SQL Server
Azure 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 DEFAULT
te 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
, Default
en 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 vanDBCC 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 vanDBCC 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
enMIN_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
enCAP_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;