Aracılığıyla paylaş


CREATE RESOURCE POOL (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL Yönetilen Örneği

Kaynak havuzu bir kaynak yöneticisi oluşturur. Kaynak havuzu, Veritabanı Altyapısı örneğinin fiziksel kaynaklarının (CPU, bellek ve GÇ) bir alt kümesini temsil eder. Resource Governor, kaynak havuzları arasında en fazla 64 havuza kadar sunucu kaynaklarını ayırmanıza veya sınırlamanıza olanak tanır.

Resource Governor, SQL Server'ın her sürümünde kullanılamaz. SQL Server sürümleri tarafından desteklenen özelliklerin listesi için bkz. Sürümleri ve SQL Server 2022'nin desteklenen özellikleri.

Not

Azure SQL Yönetilen Örneği için resource governor yapılandırmasını değiştirmek için master veritabanı bağlamında olmanız gerekir.

Transact-SQL söz dizimi kuralları

Sözdizimi

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]

Bağımsız değişken

pool_name

Kaynak havuzunun kullanıcı tanımlı adıdır. pool_name alfasayısaldır, en çok 128 karakter olabilir, Veritabanı Altyapısı örneğinde benzersiz olmalıdır veVeritabanı tanımlayıcıları kurallarına uymalıdır.

MIN_CPU_PERCENT = değer

CPU çekişmesi olduğunda kaynak havuzundaki tüm istekler için garanti edilen ortalama CPU bant genişliğini belirtir. değer, varsayılan ayarı 0 olan bir tamsayıdır. değer için izin verilen aralık 0 ile 100 arasındadır.

MAX_CPU_PERCENT = değer

CPU çekişmesi olduğunda kaynak havuzundaki tüm isteklerin aldığı ortalama en yüksek CPU bant genişliğini belirtir. değeri, varsayılan ayarı 100 olan bir tamsayıdır. değer için izin verilen aralık 1 ile 100 arasındadır.

CAP_CPU_PERCENT = değer

için geçerlidir: SQL Server 2012 (11.x) ve üzeri.

Kaynak havuzundaki tüm isteklerin aldığı CPU bant genişliği üzerinde sabit bir üst sınır belirtir. En yüksek CPU bant genişliği düzeyini belirtilen değerle aynı olacak şekilde sınırlar. değeri, varsayılan ayarı 100 olan bir tamsayıdır. değer için izin verilen aralık 1 ile 100 arasındadır.

Not

CPU idaresinin istatistiksel yapısı nedeniyle, CAP_CPU_PERCENTiçinde belirtilen değeri aşan kısa ani artışlar fark edebilirsiniz.

BENZİLİK {SCHEDULER = AUTO | ( <scheduler_range_spec> ) | NUMANODE = (<NUMA_node_range_spec>)}

için geçerlidir: SQL Server 2012 (11.x) ve üzeri.

Kaynak havuzunu belirli zamanlayıcılara ekleyin. Varsayılan değer AUTO.

AFFINITY SCHEDULER için <scheduler_range_spec> belirtilmesi, kaynak havuzunu verilen kimlikler tarafından tanımlanan Veritabanı Altyapısı zamanlayıcılarına yönlendirir. Bu kimlikler, sys.dm_os_schedulersscheduler_id sütunundaki değerlerle eşler.

AFFINITY NUMANODE için <NUMA_node_range_spec> belirtilmesi, kaynak havuzunu, verilen NUMA düğümüne veya bir düğüm aralığına karşılık gelen mantıksal CPU'larla eşleyen Veritabanı Altyapısı zamanlayıcılarıyla birleştirir. Fiziksel NUMA yapılandırmasıyla Veritabanı Altyapısı zamanlayıcı kimlikleri arasındaki eşlemeyi bulmak için aşağıdaki Transact-SQL sorgusunu kullanabilirsiniz.

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 = değer

Kaynak havuzu için ayrılan ve diğer kaynak havuzlarıyla paylaşılabilen en düşük sorgu çalışma alanı belleği miktarını belirtir. değer, varsayılan ayarı 0 olan bir tamsayıdır. değer için izin verilen aralık 0 ile 100 arasındadır.

MAX_MEMORY_PERCENT = değer

Bu kaynak havuzundaki isteklerin kullanabileceği en fazla sorgu çalışma alanı belleği miktarını belirtir. değeri, varsayılan ayarı 100 olan bir tamsayıdır. değer için izin verilen aralık 1 ile 100 arasındadır.

MIN_IOPS_PER_VOLUME = değer

için geçerlidir: SQL Server 2014 (12.x) ve üzeri.

Kaynak havuzu için ayıracak disk birimi başına saniye başına en düşük G/Ç işlemlerini (IOPS) belirtir. değeri için izin verilen aralık 0 ile 2^31-1 arasındadır (2.147.483.647). Havuz için en düşük değeri belirtmek için 0 değerini belirtin. Varsayılan değer 0'dır.

MAX_IOPS_PER_VOLUME = değer

için geçerlidir: SQL Server 2014 (12.x) ve üzeri.

Kaynak havuzuna izin vermek için disk birimi başına saniye başına en fazla G/Ç işlemini (IOPS) belirtir. değeri için izin verilen aralık 0 ile 2^31-1 arasındadır (2.147.483.647). Havuz için bir IOPS sınırını kaldırmak için 0 belirtin. Varsayılan değer 0'dır.

Havuzun MAX_IOPS_PER_VOLUME 0 olarak ayarlanırsa havuz GÇ ile yönetilmiyordur ve diğer havuzlarda MIN_IOPS_PER_VOLUME ayarlanmış olsa bile sistemdeki tüm IOPS'leri alabilir. Bu durumda, bu havuzu GÇ'ye tabi hale getirmek ve diğer havuzlar için mevcut olabilecek IOPS rezervasyonlarına saygı göstermek için bu havuz için MAX_IOPS_PER_VOLUME değerini yüksek bir sayıya (örneğin, en yüksek değer 2^31-1) ayarlamanızı öneririz.

Açıklamalar

Tüm kaynak havuzları için MIN_CPU_PERCENT veya MIN_MEMORY_PERCENT toplamı yüzde 100'ü aşamaz.

MIN_IOPS_PER_VOLUME ve MAX_IOPS_PER_VOLUME saniye başına en düşük ve en yüksek G/Ç sayısını belirtin. GÇ'ler okuma veya yazma işlemleri olabilir ve herhangi bir boyutta olabilir. Bu nedenle, aynı IOPS sınırlarıyla en düşük ve en yüksek GÇ aktarım hızı, iş yükündeki GÇ boyutlarının karışımına bağlı olarak değişebilir.

MAX_CPU_PERCENT ve MAX_MEMORY_PERCENT değerleri sırasıyla MIN_CPU_PERCENT ve MIN_MEMORY_PERCENTdeğerlerine eşit veya daha büyük olmalıdır.

CAP_CPU_PERCENT, havuzla ilişkilendirilmiş iş yüklerinin kullanılabilir durumdaysa MAX_CPU_PERCENT değerinin üzerinde CPU kapasitesi kullanabilmesi, ancak CAP_CPU_PERCENTdeğerinin üzerinde olmamasından MAX_CPU_PERCENT farklıdır. CAP_CPU_PERCENT'den yüksek kısa ani artışlar olsa da, ek CPU kapasitesi kullanılabilir olsa bile iş yükleri uzun süre boyunca CAP_CPU_PERCENT aşamaz.

Kesinleştirilmiş her bileşen (zamanlayıcılar veya NUMA düğümleri) için toplam CPU yüzdesi yüzde 100'ü aşamaz.

Daha fazla bilgi için bkz. resource governor ve resource governor kaynak havuzunu.

İzinler

CONTROL SERVER izni gerektirir.

Örnekler

Ek resource governor yapılandırma örnekleri için bkz. Resource governor yapılandırma örnekleri veen iyi yöntemler.

Kaynak havuzu oluşturma

Bu örnek, bigPooladlı bir kaynak havuzu oluşturmuştur. Bu havuz varsayılan kaynak yöneticisi ayarlarını kullanır.

CREATE RESOURCE POOL bigPool;
ALTER RESOURCE GOVERNOR RECONFIGURE;

CPU ve bellek ayırmalarını ve sınırlarını ayarlama

Bu örnekte adhocPool kaynak havuzu aşağıdaki gibi yapılandırılır:

  • Sırasıyla MIN_CPU_PERCENT ve MIN_MEMORY_PERCENT kullanarak CPU'nun yüzde 10'unun ve sorgu çalışma alanı belleğinin yüzde 5'ini ayırır.
  • MAX_MEMORY_PERCENTkullanarak yüzde 15 sorgu çalışma alanı bellek sınırı ayarlar.
  • Sırasıyla MAX_CPU_PERCENT ve CAP_CPU_PERCENT kullanarak yüzde 20 yumuşak CPU üst sınırı yüzde 30 sabit CPU üst sınırı ayarlar.
  • AFFINITY SCHEDULERkullanarak havuzu iki mantıksal CPU aralığına (0 - 63 ve 128 - 191) ayırır.

için geçerlidir: SQL Server 2012 (11.x) ve üzeri.

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 rezervasyon ve sınırını ayarlama

Bu örnek, MIN_IOPS_PER_VOLUMEkullanarak havuz için birim başına 200 IOPS ayırır ve MAX_IOPS_PER_VOLUMEkullanarak birim başına IOPS'yi 1000 ile sınırlar. Bu değerler, kaynak havuzunu kullanan istekler için kullanılabilen toplam fiziksel G/Ç okuma ve yazma işlemlerini yönetir.

için geçerlidir: SQL Server 2014 (12.x) ve üzeri.

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