Sdílet prostřednictvím


CREATE RESOURCE POOL (Transact-SQL)

platí pro:SQL Serverazure SQL Managed Instance

Vytvoří správce zdrojů fondu zdrojů. Fond zdrojů představuje podmnožinu fyzických prostředků (procesor, paměť a V/V) instance databázového stroje. Správce zdrojů umožňuje rezervovat nebo omezit prostředky serveru mezi fondy zdrojů až do maximálního počtu 64 fondů.

Správce prostředků není k dispozici v každé edici SQL Serveru. Seznam funkcí podporovaných edicemi SQL Serveru najdete v tématu Edice a podporované funkce systému SQL Server 2022.

Poznámka

Pro službu Azure SQL Managed Instance musíte být v kontextu master databáze, abyste mohli upravit konfiguraci správce prostředků.

Transact-SQL konvence syntaxe

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]

Argumenty

pool_name

Je uživatelem definovaný název fondu zdrojů. pool_name je alfanumerické, může mít maximálně 128 znaků, musí být jedinečné v rámci instance databázového stroje a musí splňovat pravidla pro identifikátory databáze .

MIN_CPU_PERCENT = hodnota

Určuje zaručenou průměrnou šířku pásma procesoru pro všechny požadavky ve fondu prostředků, pokud dojde k kolizí procesoru. hodnota je celé číslo s výchozím nastavením 0. Povolený rozsah pro hodnotu je od 0 do 100.

MAX_CPU_PERCENT = hodnota

Určuje maximální průměrnou šířku pásma procesoru, kterou obdrží všechny požadavky ve fondu prostředků, když dojde k kolizí procesoru. hodnota je celé číslo s výchozím nastavením 100. Povolený rozsah pro hodnotu je od 1 do 100.

CAP_CPU_PERCENT = hodnota

platí pro: SQL Server 2012 (11.x) a novější.

Určuje pevný limit šířky pásma procesoru, který obdrží všechny požadavky ve fondu prostředků. Omezuje maximální úroveň šířky pásma procesoru na stejnou jako zadaná hodnota. hodnota je celé číslo s výchozím nastavením 100. Povolený rozsah pro hodnotu je od 1 do 100.

Poznámka

Vzhledem ke statistické povaze zásad správného řízení procesoru můžete zaznamenat občasné krátké špičky překračující hodnotu zadanou v CAP_CPU_PERCENT.

SPŘAŽENÍ {SCHEDULER = AUTO | ( <scheduler_range_spec> ) | NUMANODE = (<NUMA_node_range_spec>)}

platí pro: SQL Server 2012 (11.x) a novější.

Připojte fond zdrojů ke konkrétním plánovačům. Výchozí hodnota je AUTO.

Zadáním <scheduler_range_spec> pro AFFINITY SCHEDULER spřažení fondu zdrojů s plánovači databázového stroje identifikované danými ID. Tato ID se mapují na hodnoty ve sloupci scheduler_id v sys.dm_os_schedulers.

Určení <NUMA_node_range_spec> pro AFFINITY NUMANODE spřažení fondu zdrojů s plánovači databázového stroje, které se mapují na logické procesory, které odpovídají danému uzlu NUMA nebo rozsahu uzlů. Pomocí následujícího dotazu Transact-SQL můžete zjistit mapování mezi fyzickou konfigurací NUMA a ID plánovače databázového stroje.

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 = hodnota

Určuje minimální velikost paměti pracovního prostoru dotazu vyhrazenou pro fond zdrojů, který nelze sdílet s jinými fondy zdrojů. hodnota je celé číslo s výchozím nastavením 0. Povolený rozsah pro hodnotu je od 0 do 100.

MAX_MEMORY_PERCENT = hodnota

Určuje maximální velikost paměti pracovního prostoru dotazu, kterou můžou použít požadavky v tomto fondu zdrojů. hodnota je celé číslo s výchozím nastavením 100. Povolený rozsah pro hodnotu je od 1 do 100.

MIN_IOPS_PER_VOLUME = hodnota

platí pro: SQL Server 2014 (12.x) a novější.

Určuje minimální vstupně-výstupní operace za sekundu (IOPS) na diskový svazek, který se má rezervovat pro fond zdrojů. Povolený rozsah pro hodnotu je od 0 do 2^31-1 (2 147 483 647). Zadejte hodnotu 0, která značí žádné minimum pro fond. Výchozí hodnota je 0.

MAX_IOPS_PER_VOLUME = hodnota

platí pro: SQL Server 2014 (12.x) a novější.

Určuje maximální počet vstupně-výstupních operací za sekundu (IOPS) na diskový svazek, který umožňuje fond zdrojů. Povolený rozsah pro hodnotu je od 0 do 2^31-1 (2 147 483 647). Zadáním hodnoty 0 odeberete limit vstupně-výstupních operací za sekundu pro fond. Výchozí hodnota je 0.

Pokud je MAX_IOPS_PER_VOLUME pro fond nastavený na hodnotu 0, fond se vůbec neřídí vstupně-výstupními operacemi a může vzít všechny IOPS v systému i v případě, že ostatní fondy mají nastavenou MIN_IOPS_PER_VOLUME. V tomto případě doporučujeme nastavit hodnotu MAX_IOPS_PER_VOLUME pro tento fond na vysoké číslo (například maximální hodnota 2^31-1), aby se tento fond mohl řídit vstupně-výstupními operacemi fondu a respektovat rezervace IOPS, které mohou existovat pro jiné fondy.

Poznámky

Součet MIN_CPU_PERCENT nebo MIN_MEMORY_PERCENT pro všechny fondy zdrojů nesmí překročit 100 procent.

MIN_IOPS_PER_VOLUME a MAX_IOPS_PER_VOLUME zadejte minimální a maximální počet vstupně-výstupních operací za sekundu. IO můžou být buď čtení, nebo zápisy a můžou mít libovolnou velikost. Díky stejným omezením IOPS se proto minimální a maximální propustnost vstupně-výstupních operací může lišit v závislosti na kombinaci velikostí vstupně-výstupních operací v úloze.

Hodnoty pro MAX_CPU_PERCENT a MAX_MEMORY_PERCENT musí být větší nebo rovny hodnotám pro MIN_CPU_PERCENT a MIN_MEMORY_PERCENT.

CAP_CPU_PERCENT se liší od MAX_CPU_PERCENT v tom, že úlohy přidružené k fondu mohou využívat kapacitu procesoru nad hodnotou MAX_CPU_PERCENT, pokud je dostupná, ale ne nad hodnotou CAP_CPU_PERCENT. I když můžou být krátké špičky vyšší než CAP_CPU_PERCENT, úlohy nemohou překročit CAP_CPU_PERCENT po delší dobu, i když je k dispozici další kapacita procesoru.

Celkové procento procesoru pro každou spřažení komponent (plánovačů nebo uzlů NUMA) nesmí překročit 100 procent.

Další informace najdete v tématu správce prostředků a fond zdrojů správce zdrojů.

Dovolení

Vyžaduje oprávnění CONTROL SERVER.

Příklady

Další příklady konfigurace správce prostředků najdete v tématu Příklady konfigurace správce prostředků a osvědčené postupy.

Vytvoření fondu zdrojů

Tento příklad vytvořil fond zdrojů s názvem bigPool. Tento fond používá výchozí nastavení správce prostředků.

CREATE RESOURCE POOL bigPool;
ALTER RESOURCE GOVERNOR RECONFIGURE;

Nastavení rezervací a limitů procesoru a paměti

Tento příklad nakonfiguruje fond zdrojů adhocPool následujícím způsobem:

  • Zarezervuje 10 procent procesoru a 5 procent paměti pracovního prostoru dotazů pomocí MIN_CPU_PERCENT a MIN_MEMORY_PERCENT v uvedeném pořadí.
  • Nastaví 15procentní limit paměti pracovního prostoru dotazu pomocí MAX_MEMORY_PERCENT.
  • Nastaví 20 % měkkého limitu procesoru a 30 % maximálního využití procesoru pomocí MAX_CPU_PERCENT a CAP_CPU_PERCENT.
  • Spřažení fondu se dvěma rozsahy logických procesorů (0 až 63 a 128 až 191) pomocí AFFINITY SCHEDULER.

platí pro: SQL Server 2012 (11.x) a novější.

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

Nastavení rezervace a limitu IOPS

Tento příklad rezervuje 200 IOPS na svazek pro fond pomocí MIN_IOPS_PER_VOLUMEa omezuje počet IOPS na svazek na 1000 pomocí MAX_IOPS_PER_VOLUME. Tyto hodnoty určují celkové fyzické vstupně-výstupní operace čtení a zápisu, které jsou k dispozici pro požadavky využívající fond zdrojů.

platí pro: SQL Server 2014 (12.x) a novější.

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