CREATE RESOURCE POOL (Transact-SQL)

適用対象:SQL ServerAzure SQL Managed Instance

SQL Server でリソース ガバナー リソース プールを作成します。 リソース プールは、データベース エンジンのインスタンスに関する物理リソース (メモリ、CPU、および IO) のサブセットを表します。 データベース管理者は、リソース ガバナーを使用することで、サーバー リソースを最大 64 個までのリソース プールに分散できます。 リソース ガバナーは、SQL Server のすべてのエディションで使用できるわけではありません。 SQL Serverの各エディションでサポートされる機能の一覧については、「 SQL Server 2016 の各エディションがサポートする機能」を参照してください。

Transact-SQL 構文表記規則

構文

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]  

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

pool_name
リソース プールのユーザー定義名を指定します。 pool_name には英数字を最大 128 文字まで使用できます。SQL Server のインスタンス内で一意である必要があり、識別子のルールに従っている必要があります。

MIN_CPU_PERCENT =value
CPU の競合がある場合に、リソース プールのすべての要求に保証される平均 CPU 帯域幅を指定します。 value は整数で、既定の設定は 0 です。 value の許容範囲は 0 から 100 です。

MAX_CPU_PERCENT =value
CPU の競合がある場合に、リソース プールのすべての要求に割り当てられる最大平均 CPU 帯域幅を指定します。 value は整数で、既定の設定は 100 です。 value の許容範囲は 1 ~ 100 です。

CAP_CPU_PERCENT =value
適用対象: SQL Server 2012 (11.x) 以降。

リソース プールのすべての要求に割り当てられる、CPU 帯域幅のハード キャップを指定します。 CPU の最大帯域幅レベルを、指定した値と同じレベルに制限します。 value は整数で、既定の設定は 100 です。 value の許容範囲は 1 ~ 100 です。

AFFINITY {SCHEDULER = AUTO | ( <scheduler_range_spec> ) | NUMANODE = (<NUMA_node_range_spec>)}
適用対象: SQL Server 2012 (11.x) 以降。

リソース プールを特定のスケジューラにアタッチします。 既定値は AUTO です。

AFFINITY SCHEDULER = (<scheduler_range_spec> >) を使用すると、指定した ID によって識別される SQL Server スケジュールにリソース プールがマップされます。 これらの ID は、sys.dm_os_schedulers (Transact-SQL) の scheduler_id column の値にマップされます。

AFFINITY NUMANODE = (<NUMA_node_range_spec>) を使用すると、リソース プールは、指定した NUMA ノードまたはノードの範囲に対応する物理 CPU にマップされた SQL Server のスケジューラに関連付けられます。 次の Transact-SQL クエリを使用して、物理 NUMA 構成と SQL Server スケジューラ ID のマッピングを検出できます。

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 =value
このリソース プール用に確保され、他のリソース プールとは共有できないメモリ量の最小値を指定します。 value は整数で、既定の設定は 0 です。value の許容範囲は 0 から 100 です。

MAX_MEMORY_PERCENT =value
このリソース プールの要求で使用できる合計サーバー メモリを指定します。 value は整数で、既定の設定は 100 です。 value の許容範囲は 1 ~ 100 です。

MIN_IOPS_PER_VOLUME =value
適用対象: SQL Server 2014 (12.x) 以降。

リソース プール用に確保するために、ディスク ボリュームごとに、1 秒あたりの最小 I/O 操作 (IOPS) を指定します。 value の許容範囲は 0 から 2^31-1 (2,147,483,647) までです。 プールに最小しきい値を指定しない場合は 0 を指定します。 既定値は 0 です。

MAX_IOPS_PER_VOLUME =value
適用対象: SQL Server 2014 (12.x) 以降。

リソース プールに許された、ディスク ボリュームごとの 1 秒あたりの最大 I/O 操作 (IOPS) 回数を指定します。 value の許容範囲は 0 から 2^31-1 (2,147,483,647) までです。 プールに無制限のしきい値を設定する場合は 0 を指定します。 既定値は 0 です。

プールの MAX_IOPS_PER_VOLUME を 0 に設定した場合、プールは管理されなくなり、他のプールで MIN_IOPS_PER_VOLUME が設定されていても、システムですべての IOPS を行うことがあります。 この場合、IO についてこのプールが管理されるようにするには、このプールの MAX_IOPS_PER_VOLUME の値をより大きな数値 (たとえば、最大値 2^31-1) に設定することをお勧めします。

解説

MIN_IOPS_PER_VOLUMEMAX_IOPS_PER_VOLUME は、1 秒あたりに行われる読み取りまたは書き込みの最小数と最大数を指定します。 これらの読み取りと書き込みでは任意のサイズを処理できます。これらの値は、最小または最大のスループットを示すものではありません。

MAX_CPU_PERCENTMAX_MEMORY_PERCENT の値は、それぞれ MIN_CPU_PERCENTMIN_MEMORY_PERCENT の値以上である必要があります。

CAP_CPU_PERCENTMAX_CPU_PERCENT の違いは、プールに関連付けられているワークロードが使用する CPU 処理量が、MAX_CPU_PERCENT の値を超えることはできても (利用可能な場合)、CAP_CPU_PERCENT の値を超えることはできない点です。

関連付けられた各コンポーネント (スケジューラまたは NUMA ノード) の CPU 使用率の合計が 100% を超えることはできません。

アクセス許可

CONTROL SERVER 権限が必要です。

1.リソース プールを作成する方法について説明します

次の例では、"bigPool" というリソース プールを作成します。 このプールは、Resource Governor の既定の設定を使用します。

CREATE RESOURCE POOL bigPool;  
GO  
ALTER RESOURCE GOVERNOR RECONFIGURE;  
GO  

2.CAP_CPU_PERCENT をハード キャップに設定し、AFFINITY SCHEDULER を設定します

CAP_CPU_PERCENT を 30% のハード キャップに設定し、AFFINITY SCHEDULER を 0-63、128-191 の範囲に設定します。

適用対象: SQL Server 2012 (11.x) 以降。

CREATE RESOURCE POOL PoolAdmin  
WITH (  
     MIN_CPU_PERCENT = 10,  
     MAX_CPU_PERCENT = 20,  
     CAP_CPU_PERCENT = 30,  
     AFFINITY SCHEDULER = (0 TO 63, 128 TO 191),  
     MIN_MEMORY_PERCENT = 5,  
     MAX_MEMORY_PERCENT = 15  
      );  

3.MIN_IOPS_PER_VOLUME と MAX_IOPS_PER_VOLUME を設定します

MIN_IOPS_PER_VOLUME を 20 に、MAX_IOPS_PER_VOLUME を 100 に設定します。 これらの値は、リソース プールで使用できる物理 I/O の読み取りと書き込みの操作を制御します。

適用対象: SQL Server 2014 (12.x) 以降。

CREATE RESOURCE POOL PoolAdmin  
WITH (  
    MIN_IOPS_PER_VOLUME = 20,  
    MAX_IOPS_PER_VOLUME = 100  
      );  

参照

ALTER RESOURCE POOL (Transact-SQL)
DROP RESOURCE POOL (Transact-SQL)
CREATE WORKLOAD GROUP (Transact-SQL)
ALTER WORKLOAD GROUP (Transact-SQL)
DROP WORKLOAD GROUP (Transact-SQL)
ALTER RESOURCE GOVERNOR (Transact-SQL)
リソース ガバナー リソース プール
リソース プールの作成