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_PERCENT
kan 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
respektiveMIN_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
respektiveCAP_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_VOLUME
och 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
);