Delen via


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 bigPoolgemaakt. 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 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.

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_VOLUMEen 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
     );