CREATE RESOURCE POOL (Transact-SQL)

A következőkre vonatkozik:SQL ServerFelügyelt Azure SQL-példány

Létrehoz egy erőforrás-vezérlőt erőforráskészletet. Az erőforráskészlet egy adatbázismotor-példány fizikai erőforrásainak (CPU, memória és I/O) egy részhalmazát jelöli. A Resource Governor lehetővé teszi, hogy szerver erőforrásokat tartsd fenn vagy korlátozzunk az erőforrás-poolok között, legfeljebb 64 pool SQL Server esetén, vagy 40 pool Azure SQL Managed Instance esetén.

Az erőforrás-vezérlő nem érhető el az SQL Server minden kiadásában. Az SQL Server kiadásai által támogatott funkciók listáját az SQL Server 2022Kiadásai és támogatott funkciói című témakörben találja.

Jegyzet

A felügyelt Azure SQL-példány erőforrás-vezérlő konfigurációjának módosításához az elsődleges replikán lévő adatbázis környezetében master kell lennie.

Transact-SQL szintaxis konvenciói

Szintaxis

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]

Érvek

pool_name

Az erőforráskészlet felhasználó által definiált neve. pool_name alfanumerikus, legfeljebb 128 karakter hosszúságú lehet, egyedinek kell lennie egy adatbázismotor-példányon belül, és meg kell felelnie adatbázis-azonosítókszabályainak.

MIN_CPU_PERCENT = érték

Megadja a garantált átlagos CPU sávszélességet az erőforrás poolban lévő összes kérésre, amikor CPU-ellenállás van. érték egy 0 alapértelmezett beállítású egész szám. Az érték megengedett tartománya 0 és 100 között lehet.

MAX_CPU_PERCENT = érték

Megadja a maximális átlagos CPU sávszélességet, amelyet az erőforrás-pool összes kérése kap, amikor CPU-vita van. érték egy 100 alapértelmezett beállítású egész szám. Az érték megengedett tartománya 1 és 100 között lehet.

CAP_CPU_PERCENT = érték

A következővonatkozik: SQL Server 2012 (11.x) és újabb.

Meghatározza az erőforráskészlet összes kérése által fogadott cpu-sávszélesség kemény korlátját. A maximális cpu-sávszélesség-szint a megadott értékkel megegyezőre korlátozza. érték egy 100 alapértelmezett beállítású egész szám. Az érték megengedett tartománya 1 és 100 között lehet.

Jegyzet

A CPU-szabályozás statisztikai jellege miatt előfordulhat, hogy a CAP_CPU_PERCENT.

AFFINITÁS {SCHEDULER = AUTO | ( <scheduler_range_spec> ) | NUMANODE = (<NUMA_node_range_spec>)}

A következővonatkozik: SQL Server 2012 (11.x) és újabb.

Csatolja az erőforráskészletet adott ütemezőkhöz. Az alapértelmezett érték a AUTO.

A <scheduler_range_spec>AFFINITY SCHEDULER megadása affinitja az erőforráskészletet a megadott azonosítók által azonosított adatbázismotor-ütemezőkhöz. Ezek az azonosítók a scheduler_id oszlopában lévő értékekhez vannak megfeleltetve.

A <NUMA_node_range_spec>AFFINITY NUMANODE megadásával az erőforráskészletet az adatbázismotor ütemezőihez rendeli, amelyek az adott NUMA-csomópontnak vagy csomóponttartománynak megfelelő logikai CPU-khoz lesznek megfeleltetve. Az alábbi Transact-SQL lekérdezés segítségével felderítheti a fizikai NUMA-konfiguráció és az adatbázismotor ütemezőazonosítói közötti megfeleltetést.

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 = érték

Megadja az erőforráskészlet számára fenntartott lekérdezési munkaterület minimális memóriáját, amely nem osztható meg más erőforráskészletekkel. érték egy 0 alapértelmezett beállítású egész szám. A érték megengedett tartománya 0 és 100 között van.

MAX_MEMORY_PERCENT = érték

Megadja, hogy az erőforráskészletben lévő kérések maximálisan mennyi lekérdezési munkaterület memóriát használhatnak. érték egy 100 alapértelmezett beállítású egész szám. Az érték megengedett tartománya 1 és 100 között lehet.

MIN_IOPS_PER_VOLUME = érték

A következővonatkozik: SQL Server 2014 (12.x) és újabb.

Megadja az erőforráskészlethez lefoglalandó lemezkötetenkénti minimális I/O-műveleteket (IOPS). Az érték megengedett tartománya 0 és 2^31–1 között van (2 147 483 647). Adjon meg 0 értéket a készlet minimális számának megadásához. Az alapértelmezett érték 0.

MAX_IOPS_PER_VOLUME = érték

A következővonatkozik: SQL Server 2014 (12.x) és újabb.

Megadja az erőforráskészlet engedélyezéséhez másodpercenkénti maximális I/O-műveleteket (IOPS) lemezkötetenként. Az érték megengedett tartománya 0 és 2^31–1 között van (2 147 483 647). A készlet IOPS-korlátjának eltávolításához adja meg a 0 értéket. Az alapértelmezett érték 0.

Ha egy készlet MAX_IOPS_PER_VOLUME 0 értékre van állítva, a készlet egyáltalán nem IO-szabályozás alatt áll, és akkor is elviheti a rendszerben lévő összes IOPS-t, ha más készletek MIN_IOPS_PER_VOLUME vannak beállítva. Ebben az esetben azt javasoljuk, hogy állítsa a készlet MAX_IOPS_PER_VOLUME értékét magas számra (például a maximális 2^31-1 értékre), hogy ez a készlet IO-szabályozással legyen szabályozva, és hogy tiszteletben tarthassa a többi készlet esetében esetleg meglévő IOPS-foglalásokat.

Megjegyzések

Az összes erőforráskészlethez tartozó MIN_CPU_PERCENT vagy MIN_MEMORY_PERCENT összege nem haladhatja meg a 100%-ot.

MIN_IOPS_PER_VOLUME és MAX_IOPS_PER_VOLUME adja meg a másodpercenkénti minimális és maximális I/O-t. Az I/O-k lehetnek olvasások vagy írások, és bármilyen méretűek lehetnek. Ezért ugyanazokkal az IOPS-korlátokkal a minimális és maximális I/O-átviteli sebesség a számítási feladat I/O-méreteinek keverékétől függően változhat.

A MAX_CPU_PERCENT és a MAX_MEMORY_PERCENT értékeinek nagyobbnak vagy egyenlőnek kell lenniük a MIN_CPU_PERCENT és MIN_MEMORY_PERCENTértékeinél.

CAP_CPU_PERCENT abban különbözik, MAX_CPU_PERCENT hogy a poolhoz kapcsolódó munkaterhelések CPU kapacitást használhatnak a rendelkezésre álló érték MAX_CPU_PERCENT felett, de nem a értéke CAP_CPU_PERCENTfelett. Bár előfordulhat, hogy a CAP_CPU_PERCENT-nél rövidebb kiugró csúcsok is előfordulhatnak, a számítási feladatok hosszabb ideig nem haladhatják meg a CAP_CPU_PERCENT, még akkor sem, ha további processzorkapacitás áll rendelkezésre.

Az egyes affinitásos összetevők (ütemező(k) vagy NUMA-csomópont(ok)) teljes processzorszázaléka nem haladhatja meg a 100 százalékot.

További információ: Erőforrás-kormányzó és Erőforrás-vezérlő erőforráskészlet.

Engedélyek

A CONTROL SERVER engedélyre van szükség.

Példák

További erőforrás-vezérlőkonfigurációs példákért lásd erőforrás-vezérlő konfigurációs példáit és ajánlott eljárásait.

Erőforráskészlet létrehozása

Ez a példa létrehozott egy bigPoolnevű erőforráskészletet. Ez a készlet az alapértelmezett erőforrás-vezérlőbeállításokat használja.

CREATE RESOURCE POOL bigPool;
ALTER RESOURCE GOVERNOR RECONFIGURE;

CPU- és memóriafoglalások és -korlátok beállítása

Ez a példa a adhocPool erőforráskészletet a következőképpen konfigurálja:

  • A processzor 10 százalékát, a lekérdezési munkaterület memóriájának 5 százalékát lefoglalja MIN_CPU_PERCENT és MIN_MEMORY_PERCENT használatával.
  • 15 százalékos lekérdezési munkaterület memóriakorlátját állítja be a MAX_MEMORY_PERCENThasználatával.
  • 20 százalékos puha CPU-korlátot állít be 30 százalékos kemény cpu-korláttal MAX_CPU_PERCENT és CAP_CPU_PERCENT használatával.
  • A készletet két logikai CPU-tartományhoz (0–63 és 128–191) affinitja AFFINITY SCHEDULERhasználatával.

A következővonatkozik: SQL Server 2012 (11.x) és újabb.

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-foglalás és -korlát beállítása

Ez a példa kötetenként 200 IOPS-t foglal le a készlethez MIN_IOPS_PER_VOLUMEhasználatával, és a kötetenkénti IOPS-t 1000-re korlátozza a MAX_IOPS_PER_VOLUMEhasználatával. Ezek az értékek szabályozzák az erőforráskészletet használó kérelmekhez elérhető összes fizikai I/O olvasási és írási műveletet.

A következővonatkozik: SQL Server 2014 (12.x) és újabb.

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