Dela via


SKAPA RESURSPOOL (Transact-SQL)

gäller för:SQL ServerAzure SQL Managed Instance

Skapar en resursguvernör resurspool. En resurspool representerar en delmängd av de fysiska resurserna (CPU, minne och I/O) för en databasmotorinstans. Med Resource Governor kan du reservera eller begränsa serverresurser mellan resurspooler, upp till högst 64 pooler.

Resursguvernören är inte tillgänglig i varje utgåva av SQL Server. En lista över funktioner som stöds av versionerna av SQL Server finns i Utgåvor och funktioner som stöds i SQL Server 2022.

Not

För Azure SQL Managed Instance måste du vara i kontexten för den master databasen för att ändra konfigurationen av resursguvernören.

Transact-SQL syntaxkonventioner

Syntax

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]

Argument

pool_name

Är det användardefinierade namnet på resurspoolen. pool_name är alfanumeriskt, kan vara upp till 128 tecken, måste vara unikt i en databasmotorinstans och måste följa reglerna för Database-identifierare.

MIN_CPU_PERCENT = värde

Anger den garanterade genomsnittliga CPU-bandbredden för alla begäranden i resurspoolen när det finns CPU-konkurrens. värde är ett heltal med standardinställningen 0. Det tillåtna intervallet för värde är mellan 0 och 100.

MAX_CPU_PERCENT = värde

Anger den maximala genomsnittliga CPU-bandbredden som alla begäranden i resurspoolen tar emot när det finns CPU-konkurrens. värde är ett heltal med standardinställningen 100. Det tillåtna intervallet för värde är från 1 till 100.

CAP_CPU_PERCENT = värde

gäller för: SQL Server 2012 (11.x) och senare.

Anger ett hårt tak för processorbandbredden som alla begäranden i resurspoolen tar emot. Begränsar den maximala processorbandbreddsnivån till samma som det angivna värdet. värde är ett heltal med standardinställningen 100. Det tillåtna intervallet för värde är från 1 till 100.

Not

På grund av cpu-styrningens statistiska karaktär kan det hända att enstaka korta toppar överskrider det värde som anges i CAP_CPU_PERCENT.

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

gäller för: SQL Server 2012 (11.x) och senare.

Koppla resurspoolen till specifika schemaläggare. Standardvärdet är AUTO.

Om du anger <scheduler_range_spec> för AFFINITY SCHEDULER mappas resurspoolen till databasmotorns schemaläggare som identifieras av de angivna ID:erna. Dessa ID:er mappas till värdena i kolumnen scheduler_id i sys.dm_os_schedulers.

Om du anger <NUMA_node_range_spec> för AFFINITY NUMANODE mappas resurspoolen till databasmotorns schemaläggare som mappas till de logiska processorer som motsvarar den angivna NUMA-noden eller ett intervall med noder. Du kan använda följande Transact-SQL fråga för att identifiera mappningen mellan den fysiska NUMA-konfigurationen och schemaläggnings-ID:n för databasmotorn.

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 = värde

Anger den minsta mängd minne för frågearbetsytan som är reserverat för resurspoolen som inte kan delas med andra resurspooler. värde är ett heltal med standardinställningen 0. Det tillåtna intervallet för värde är mellan 0 och 100.

MAX_MEMORY_PERCENT = värde

Anger den maximala mängden minne för frågearbetsytan som begäranden i den här resurspoolen kan använda. värde är ett heltal med standardinställningen 100. Det tillåtna intervallet för värde är från 1 till 100.

MIN_IOPS_PER_VOLUME = värde

gäller för: SQL Server 2014 (12.x) och senare.

Anger minsta I/O-åtgärder per sekund (IOPS) per diskvolym som ska reserveras för resurspoolen. Det tillåtna intervallet för värde är från 0 till 2^31-1 (2 147 483 647). Ange 0 för att ange något minimum för poolen. Standardvärdet är 0.

MAX_IOPS_PER_VOLUME = värde

gäller för: SQL Server 2014 (12.x) och senare.

Anger maximalt antal I/O-åtgärder per sekund (IOPS) per diskvolym som ska tillåtas för resurspoolen. Det tillåtna intervallet för värde är från 0 till 2^31-1 (2 147 483 647). Ange 0 för att ta bort en IOPS-gräns för poolen. Standardvärdet är 0.

Om MAX_IOPS_PER_VOLUME för en pool är inställd på 0 är poolen inte alls IO-styrd och kan ta alla IOPS i systemet även om andra pooler har MIN_IOPS_PER_VOLUME angetts. I det här fallet rekommenderar vi att du anger MAX_IOPS_PER_VOLUME värdet för den här poolen till ett högt tal (till exempel det maximala värdet 2^31-1) för att göra poolenS I/O-styrd och för att uppfylla de IOPS-reservationer som kan finnas för andra pooler.

Anmärkningar

Summan av MIN_CPU_PERCENT eller MIN_MEMORY_PERCENT för alla resurspooler får inte överstiga 100 procent.

MIN_IOPS_PER_VOLUME och MAX_IOPS_PER_VOLUME ange lägsta och högsta I/O per sekund. I/O kan vara antingen läsningar eller skrivningar och kan vara av valfri storlek. Med samma IOPS-gränser kan därför det lägsta och högsta I/O-dataflödet variera beroende på blandningen av I/O-storlekar i arbetsbelastningen.

Värdena för MAX_CPU_PERCENT och MAX_MEMORY_PERCENT måste vara större än eller lika med värdena för MIN_CPU_PERCENT respektive MIN_MEMORY_PERCENT.

CAP_CPU_PERCENT skiljer sig från MAX_CPU_PERCENT eftersom arbetsbelastningar som är associerade med poolen kan använda processorkapacitet över värdet för MAX_CPU_PERCENT om den är tillgänglig, men inte över värdet för CAP_CPU_PERCENT. Även om det kan finnas korta toppar som är högre än CAP_CPU_PERCENTkan arbetsbelastningar inte överskrida CAP_CPU_PERCENT under längre tidsperioder, även om det finns ytterligare processorkapacitet.

Den totala CPU-procentandelen för varje tillhörighetskomponent (schemaläggare eller NUMA-noder) får inte överstiga 100 procent.

Mer information finns i resurspoolen Resource Governor och Resource Governor.

Behörigheter

Kräver behörigheten CONTROL SERVER.

Exempel

Ytterligare konfigurationsexempel för resource governor finns i Resource Governor-konfigurationsexempel och metodtips.

Skapa en resurspool

I det här exemplet skapades en resurspool med namnet bigPool. Den här poolen använder standardinställningarna för resursguvernör.

CREATE RESOURCE POOL bigPool;
ALTER RESOURCE GOVERNOR RECONFIGURE;

Ange processor- och minnesreservationer och gränser

I det här exemplet konfigureras adhocPool resurspool på följande sätt:

  • Reserverar 10 procent av processorn och 5 procent av frågearbetsytans minne med hjälp av MIN_CPU_PERCENT respektive MIN_MEMORY_PERCENT.
  • Anger en minnesgräns på 15 procent för frågearbetsytan med hjälp av MAX_MEMORY_PERCENT.
  • Anger ett 20-procentigt mjukt CPU-tak med ett 30 procent hårt CPU-tak med hjälp av MAX_CPU_PERCENT respektive CAP_CPU_PERCENT.
  • Mappar poolen till två intervall med logiska processorer (0 till 63 och 128 till 191) med hjälp av AFFINITY SCHEDULER.

gäller för: SQL Server 2012 (11.x) och senare.

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

Ange IOPS-reservation och -gräns

I det här exemplet reserveras 200 IOPS per volym för poolen med hjälp av MIN_IOPS_PER_VOLUMEoch begränsar IOPS per volym till 1 000 med hjälp av MAX_IOPS_PER_VOLUME. Dessa värden styr de totala fysiska I/O-läs- och skrivåtgärder som är tillgängliga för begäranden med hjälp av resurspoolen.

gäller för: SQL Server 2014 (12.x) och senare.

CREATE RESOURCE POOL PoolAdmin
WITH (
     MIN_IOPS_PER_VOLUME = 200,
     MAX_IOPS_PER_VOLUME = 1000
     );