TWORZENIE PULI ZASOBÓW (Transact-SQL)
Dotyczy:programu SQL ServerAzure SQL Managed Instance
Tworzy zarządcę zasobów puli zasobów. Pula zasobów reprezentuje podzbiór zasobów fizycznych (procesora CPU, pamięci i operacji we/wy) wystąpienia aparatu bazy danych. Zarządca zasobów umożliwia rezerwowanie lub ograniczanie zasobów serwera między pulami zasobów, maksymalnie 64 pulami.
Zarządca zasobów nie jest dostępny w każdej wersji programu SQL Server. Aby uzyskać listę funkcji obsługiwanych przez wersje programu SQL Server, zobacz Editions i obsługiwane funkcje programu SQL Server 2022.
Nuta
W przypadku usługi Azure SQL Managed Instance musisz być w kontekście bazy danych master
, aby zmodyfikować konfigurację zarządcy zasobów.
Transact-SQL konwencje składni
Składnia
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]
Argumenty
pool_name
To nazwa zdefiniowana przez użytkownika dla puli zasobów. pool_name jest alfanumeryczna, może zawierać maksymalnie 128 znaków, musi być unikatowa w wystąpieniu aparatu bazy danych i musi być zgodna z regułami dotyczącymi identyfikatorów bazy danych .
MIN_CPU_PERCENT = wartość
Określa gwarantowaną średnią przepustowość procesora CPU dla wszystkich żądań w puli zasobów, gdy występuje rywalizacja o procesor CPU. wartość jest liczbą całkowitą z domyślnym ustawieniem 0. Dozwolony zakres wartości wynosi od 0 do 100.
MAX_CPU_PERCENT = wartość
Określa maksymalną średnią przepustowość procesora CPU odbieraną przez wszystkie żądania w puli zasobów w przypadku rywalizacji o procesor CPU. wartość jest liczbą całkowitą z ustawieniem domyślnym 100. Dozwolony zakres wartości wynosi od 1 do 100.
CAP_CPU_PERCENT = wartość
Dotyczy: SQL Server 2012 (11.x) i nowsze.
Określa sztywny limit przepustowości procesora CPU odbierany przez wszystkie żądania w puli zasobów. Ogranicza maksymalny poziom przepustowości procesora CPU, który ma być taki sam jak określona wartość. wartość jest liczbą całkowitą z ustawieniem domyślnym 100. Dozwolony zakres wartości wynosi od 1 do 100.
Nuta
Ze względu na statystyczny charakter ładu procesora CPU można zauważyć okazjonalne krótkie skoki przekraczające wartość określoną w CAP_CPU_PERCENT
.
KOLIGACJA {SCHEDULER = AUTO | ( <scheduler_range_spec> ) | NUMANODE = (<NUMA_node_range_spec>)}
Dotyczy: SQL Server 2012 (11.x) i nowsze.
Dołącz pulę zasobów do określonych harmonogramów. Wartość domyślna to AUTO
.
Określanie <scheduler_range_spec>
dla AFFINITY SCHEDULER
affinitize puli zasobów do harmonogramów aparatu bazy danych zidentyfikowanych przez podane identyfikatory. Te identyfikatory są mapowane na wartości w kolumnie scheduler_id
w sys.dm_os_schedulers.
Określanie <NUMA_node_range_spec>
dla AFFINITY NUMANODE
affinitize puli zasobów do harmonogramów aparatu bazy danych mapujących na logiczne procesory, które odpowiadają danym węzłom NUMA lub zakresowi węzłów. Poniższe zapytanie Transact-SQL umożliwia odnalezienie mapowania między fizyczną konfiguracją NUMA i identyfikatorami harmonogramu aparatu bazy danych.
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 = wartość
Określa minimalną ilość pamięci obszaru roboczego zapytań zarezerwowaną dla puli zasobów, która nie może być współdzielona z innymi pulami zasobów. wartość jest liczbą całkowitą z domyślnym ustawieniem 0. Dozwolony zakres wartości wynosi od 0 do 100.
MAX_MEMORY_PERCENT = wartości
Określa maksymalną ilość pamięci obszaru roboczego zapytań, która może być używana przez żądania w tej puli zasobów. wartość jest liczbą całkowitą z ustawieniem domyślnym 100. Dozwolony zakres wartości wynosi od 1 do 100.
MIN_IOPS_PER_VOLUME = wartość
Dotyczy: SQL Server 2014 (12.x) i nowszych.
Określa minimalną liczbę operacji we/wy na sekundę (IOPS) na wolumin dysku do zarezerwowania dla puli zasobów. Dozwolony zakres wartości wynosi od 0 do 2^31–1 (2 147 483 647). Określ wartość 0, aby wskazać wartość minimalną dla puli. Wartość domyślna to 0.
MAX_IOPS_PER_VOLUME = wartość
Dotyczy: SQL Server 2014 (12.x) i nowszych.
Określa maksymalną liczbę operacji we/wy na sekundę (IOPS) na wolumin dysku, aby zezwolić na pulę zasobów. Dozwolony zakres wartości wynosi od 0 do 2^31–1 (2 147 483 647). Określ wartość 0, aby usunąć limit liczby operacji we/wy na sekundę dla puli. Wartość domyślna to 0.
Jeśli MAX_IOPS_PER_VOLUME
dla puli ma wartość 0, pula nie jest w ogóle zarządzana operacjami we/wy i może przyjmować wszystkie operacje we/wy w systemie, nawet jeśli inne pule mają ustawioną MIN_IOPS_PER_VOLUME
. W tym przypadku zalecamy ustawienie wartości MAX_IOPS_PER_VOLUME
dla tej puli na dużą liczbę (na przykład wartość maksymalną 2^31–1), aby ta pula zarządzała operacjami we/wy i uwzględniała rezerwacje operacji we/wy na sekundę, które mogą istnieć dla innych pul.
Uwagi
Suma MIN_CPU_PERCENT
lub MIN_MEMORY_PERCENT
dla wszystkich pul zasobów nie może przekroczyć 100 procent.
MIN_IOPS_PER_VOLUME
i MAX_IOPS_PER_VOLUME
określ minimalną i maksymalną liczbę operacji we/wy na sekundę. Operacje we/wy mogą być odczytywane lub zapisywane i mogą mieć dowolny rozmiar. W związku z tym w przypadku tych samych limitów liczby operacji we/wy na sekundę minimalna i maksymalna przepływność operacji we/wy mogą się różnić w zależności od kombinacji rozmiarów operacji we/wy w obciążeniu.
Wartości MAX_CPU_PERCENT
i MAX_MEMORY_PERCENT
muszą być większe lub równe wartościom odpowiednio MIN_CPU_PERCENT
i MIN_MEMORY_PERCENT
.
CAP_CPU_PERCENT
różni się od MAX_CPU_PERCENT
, że obciążenia skojarzone z pulą mogą używać pojemności procesora CPU powyżej wartości MAX_CPU_PERCENT
, jeśli jest dostępna, ale nie powyżej wartości CAP_CPU_PERCENT
. Chociaż mogą wystąpić krótkie skoki wyższe niż CAP_CPU_PERCENT
, obciążenia nie mogą przekraczać CAP_CPU_PERCENT
przez dłuższy czas, nawet jeśli jest dostępna dodatkowa pojemność procesora CPU.
Łączna wartość procentowa procesora CPU dla każdego składnika affinitized (harmonogramów lub węzłów NUMA) nie może przekroczyć 100 procent.
Aby uzyskać więcej informacji, zobacz Zarządca zasobów i pula zasobów zarządcy zasobów .
Uprawnienia
Wymaga uprawnienia CONTROL SERVER
.
Przykłady
Aby uzyskać dodatkowe przykłady konfiguracji zarządcy zasobów, zobacz przykłady konfiguracji zarządcy zasobów i najlepsze rozwiązania.
Tworzenie puli zasobów
W tym przykładzie utworzono pulę zasobów o nazwie bigPool
. Ta pula używa domyślnych ustawień zarządcy zasobów.
CREATE RESOURCE POOL bigPool;
ALTER RESOURCE GOVERNOR RECONFIGURE;
Ustawianie rezerwacji i limitów procesora CPU i pamięci
W tym przykładzie skonfigurowana jest pula zasobów adhocPool
w następujący sposób:
- Rezerwuje odpowiednio 10 procent procesora CPU i 5 procent pamięci obszaru roboczego zapytań przy użyciu
MIN_CPU_PERCENT
iMIN_MEMORY_PERCENT
. - Ustawia limit pamięci obszaru roboczego zapytań o 15 procent przy użyciu
MAX_MEMORY_PERCENT
. - Ustawia 20 procent miękkiego limitu procesora CPU na 30 procent twardego limitu procesora przy użyciu odpowiednio
MAX_CPU_PERCENT
iCAP_CPU_PERCENT
. - Affinitize pulę do dwóch zakresów logicznych procesorów CPU (od 0 do 63 i 128 do 191) przy użyciu
AFFINITY SCHEDULER
.
Dotyczy: SQL Server 2012 (11.x) i nowsze.
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)
);
Ustawianie rezerwacji i limitu liczby operacji we/wy na sekundę
W tym przykładzie rezerwuje 200 operacji we/wy na sekundę na wolumin dla puli przy użyciu MIN_IOPS_PER_VOLUME
i ogranicza liczbę operacji we/wy na sekundę na wolumin do 1000 przy użyciu MAX_IOPS_PER_VOLUME
. Te wartości określają łączną liczbę fizycznych operacji odczytu i zapisu we/wy dostępnych dla żądań przy użyciu puli zasobów.
Dotyczy: SQL Server 2014 (12.x) i nowszych.
CREATE RESOURCE POOL PoolAdmin
WITH (
MIN_IOPS_PER_VOLUME = 200,
MAX_IOPS_PER_VOLUME = 1000
);