RESOURCEGROEP MAKEN (Transact-SQL)
van toepassing op:SQL ServerAzure SQL Managed Instance
Hiermee maakt u een resource governor resourcegroep. Een resourcegroep vertegenwoordigt een subset van de fysieke resources (CPU, geheugen en IO) van een database-engine-exemplaar. Met Resource Governor kunt u serverresources reserveren of beperken tussen resourcegroepen, tot maximaal 64 pools.
Resource governor is niet beschikbaar in elke editie van SQL Server. Zie -edities en ondersteunde functies van SQL Server 2022voor een lijst met functies die worden ondersteund door de edities van SQL Server.
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
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]
Argumenten
pool_name
Is de door de gebruiker gedefinieerde naam voor de resourcegroep. pool_name alfanumeriek is, kan maximaal 128 tekens zijn, moet uniek zijn binnen een database-engine-exemplaar en moet voldoen aan de regels voor database-id's.
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.
Machtigingen
Hiervoor is de machtiging CONTROL SERVER
vereist.
Voorbeelden
Zie Resource Governor-configuratievoorbeelden en best practicesvoor aanvullende resource governor-configuratievoorbeelden.
Een resourcegroep maken
In dit voorbeeld is een resourcegroep met de naam bigPool
gemaakt. Deze pool maakt gebruik van de standaardinstellingen voor resource governor.
CREATE RESOURCE POOL bigPool;
ALTER RESOURCE GOVERNOR RECONFIGURE;
CPU- en geheugenreserveringen en -limieten instellen
In dit voorbeeld wordt de adhocPool
resourcegroep als volgt geconfigureerd:
- 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.
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)
);
IOPS-reservering en -limiet instellen
In dit voorbeeld worden 200 IOPS per volume gereserveerd voor de pool met behulp van MIN_IOPS_PER_VOLUME
en worden de IOPS per volume beperkt tot 1000 met behulp van MAX_IOPS_PER_VOLUME
. Deze waarden bepalen de totale fysieke I/O-lees- en schrijfbewerkingen die beschikbaar zijn voor aanvragen met behulp van de resourcegroep.
Van toepassing op: SQL Server 2014 (12.x) en hoger.
CREATE RESOURCE POOL PoolAdmin
WITH (
MIN_IOPS_PER_VOLUME = 200,
MAX_IOPS_PER_VOLUME = 1000
);