CREATE RESOURCE POOL (Transact-SQL)
SQL Server でリソース ガバナー リソース プールを作成します。 リソース プールは、データベース エンジンのインスタンスに関する物理リソース (メモリ、CPU、および IO) のサブセットを表します。 データベース管理者は、リソース ガバナーを使用することで、サーバー リソースを最大 64 個までのリソース プールに分散できます。 リソース ガバナーは、SQL Server のすべてのエディションで使用できるわけではありません。 SQL Server の各エディションでサポートされる機能の一覧については、「SQL Server 2014 の各エディションがサポートする機能」を参照してください。
適用対象: SQL Server (SQL Server 2008 から現在のバージョンまで) |
構文
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]
引数
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 から SQL Server 2014
リソース プールのすべての要求に割り当てられる、CPU 帯域幅のハード キャップを指定します。 CPU の最大帯域幅レベルを、指定した値と同じレベルに制限します。 value は整数で、既定の設定は 100 です。 value の許容範囲は 1 ~ 100 です。
AFFINITY {SCHEDULER = AUTO | ( <scheduler_range_spec> ) | NUMANODE = (<NUMA_node_range_spec>)}
適用対象: SQL Server 2012 から SQL Server 2014
リソース プールを特定のスケジューラにアタッチします。 既定値は 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 から SQL Server 2014
リソース プール用に確保するために、ディスク ボリュームごとに、1 秒あたりの最小 I/O 操作 (IOPS) を指定します。 value の許容範囲は 0 ~ 2^31-1 (2,147,483,647) です。 プールに最小しきい値を指定しない場合は 0 を指定します。 既定値は 0 です。
MAX_IOPS_PER_VOLUME =value
適用対象: SQL Server 2014 から SQL Server 2014
リソース プールに許された、ディスク ボリュームごとの 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_VOLUME と MAX_IOPS_PER_VOLUME は、1 秒あたりに行われる読み取りまたは書き込みの最小数と最大数を指定します。 これらの読み取りと書き込みでは任意のサイズを処理できます。これらの値は、最小または最大のスループットを示すものではありません。
MAX_CPU_PERCENT および MAX_MEMORY_PERCENT には、それぞれ MIN_CPU_PERCENT および MIN_MEMORY_PERCENT 以上の値を指定する必要があります。
CAP_CPU_PERCENT と MAX_CPU_PERCENT の違いは、プールに関連付けられているワークロードが使用する CPU 処理量が、MAX_CPU_PERCENT の値を超えることはできても (利用可能な場合)、CAP_CPU_PERCENT の値を超えることはできない点です。
関連付けられた各コンポーネント (スケジューラまたは NUMA ノード) の CPU 使用率の合計が 100% を超えることはできません。
権限
CONTROL SERVER 権限が必要です。
使用例
bigPool という名前のリソース プールを作成する方法を次の例に示します。 このプールは、リソース ガバナーの既定の設定を使用します。
CREATE RESOURCE POOL bigPool;
GO
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO
次の例では、CAP_CPU_PERCENT を 30% というハード キャップに設定し、AFFINITY SCHEDULER を 0 ~ 63、128 ~ 191 の範囲に設定します。
適用対象: SQL Server 2012 から SQL Server 2014 |
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
);
次の例では、MIN_IOPS_PER_VOLUME を <some value> に、また MAX_IOPS_PER_VOLUME を <some value> に設定します。 これらの値は、リソース プールで使用できる物理 I/O の読み取りと書き込みの操作を制御します。
適用対象: SQL Server 2014 から SQL Server 2014 |
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)