次の方法で共有


ALTER RESOURCE POOL (Transact-SQL)

適用対象:SQL ServerAzure SQL Managed Instance

データベース エンジン インスタンスの既存の リソース ガバナー リソース プールの構成を変更します。

注意

Azure SQL Managed Instance の場合、リソース ガバナーの構成を変更するには、master データベースのコンテキストにある必要があります。

Transact-SQL 構文表記規則

構文

ALTER RESOURCE POOL { pool_name | [default] }
[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 |[default] }

既存のユーザー定義リソース プールまたは組み込みの default リソース プールの名前です。

default システム予約語である DEFAULTとの競合を回避するために、ALTER RESOURCE POOL で使用する場合は、角かっこ ([]) または引用符 ("") にする必要があります。 詳細については、「データベース識別子の」を参照してください。

組み込みのリソース プールとワークロード グループでは、defaultなど、すべての小文字の名前が使用されます。 大文字と小文字を区別する照合順序を使用するサーバーでは、小文字の default を使用します。 大文字と小文字を区別しない照合順序を持つサーバーは、defaultDefault、および DEFAULT を同じ値として扱います。

MIN_CPU_PERCENT =

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

MAX_CPU_PERCENT =

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

CAP_CPU_PERCENT =

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

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

注意

CPU ガバナンスの統計的性質により、CAP_CPU_PERCENTで指定された値を超える短いスパイクが時折発生することがあります。

AFFINITY {SCHEDULER = AUTO |( <scheduler_range_spec> ) |NUMANODE = (<NUMA_node_range_spec>)}

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

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

AFFINITY SCHEDULER<scheduler_range_spec> を指定すると、リソース プールが、指定された ID によって識別されるデータベース エンジン スケジューラに関連付けられます。 これらの ID は、sys.dm_os_schedulersscheduler_id 列の値にマップされます。

AFFINITY NUMANODE<NUMA_node_range_spec> を指定すると、指定された NUMA ノードまたはノードの範囲に対応する論理 CPU にマップされるデータベース エンジン スケジューラにリソース プールが関連付けられます。 次の Transact-SQL クエリを使用して、物理 NUMA 構成とデータベース エンジン スケジューラ 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 は整数で、既定の設定は 0 です。 値に使用できる範囲は 0 から 100 です。

MAX_MEMORY_PERCENT =

このリソース プール内の要求で使用できるクエリ ワークスペース メモリの最大量を指定します。 value は整数で、既定の設定は 100 です。 value の許容範囲は 1 ~ 100 です。

MIN_IOPS_PER_VOLUME =

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

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

MAX_IOPS_PER_VOLUME =

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

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

プールの MAX_IOPS_PER_VOLUME が 0 に設定されている場合、プールはまったく IO によって管理されず、他のプールが MIN_IOPS_PER_VOLUME 設定されている場合でも、システム内のすべての IOPS を受け取ることができます。 この場合は、このプールの MAX_IOPS_PER_VOLUME 値を高い数値 (たとえば、最大値 2^31-1) に設定して、このプールを IO 管理し、他のプールに存在する可能性がある IOPS 予約を優先することをお勧めします。

注釈

すべてのリソース プールの MIN_CPU_PERCENT または MIN_MEMORY_PERCENT の合計が 100% を超えることはできません。

MIN_IOPS_PER_VOLUMEMAX_IOPS_PER_VOLUME では、1 秒あたりの IO の最小値と最大値を指定します。 IO は読み取りまたは書き込みのいずれかであり、任意のサイズにすることができます。 そのため、同じ IOPS 制限により、最小 IO スループットと最大 IO スループットは、ワークロード内の IO サイズの組み合わせによって異なる場合があります。

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

CAP_CPU_PERCENT は、プールに関連付けられているワークロードが使用可能な場合は、MAX_CPU_PERCENT の値を超える CPU 容量を使用できるが、CAP_CPU_PERCENTの値を超えないという MAX_CPU_PERCENT とは異なります。 CAP_CPU_PERCENTよりも短いスパイクが発生する可能性がありますが、追加の CPU 容量が使用可能な場合でも、ワークロードは長期間にわたって CAP_CPU_PERCENT を超えることはできません。

各アフィニティコンポーネント (スケジューラまたは NUMA ノード) の合計 CPU 使用率は、100% を超えることはできません。

詳細については、「リソース ガバナーの とリソース ガバナー リソース プールの」を参照してください。

キャッシュされたプラン

設定に影響するプランを変更すると、新しい設定は、DBCC FREEPROCCACHE (<pool_name>)を実行した後にのみ、以前にキャッシュされたプランで有効になります。ここで、<pool_name> はリソース ガバナー リソース プールの名前です。

  • AFFINITY を複数のスケジューラから 1 つのスケジューラに変更する場合は、並列プランをシリアル モードで実行できるため、DBCC FREEPROCCACHE の実行は必要ありません。 ただし、このようなプランは、シリアル プランとしてコンパイルされたプランよりも効率が低い場合があります。
  • AFFINITY を 1 つのスケジューラから複数のスケジューラに変更する場合、DBCC FREEPROCCACHE の実行は必要ありません。 ただし、シリアル プランは並列で実行できないため、それぞれのキャッシュをクリアすると、並列処理を使用して新しいプランをコンパイルできる可能性があります。

警告

複数のワークロード グループに関連付けられているリソース プールからキャッシュされたプランをクリアすると、<pool_name>によって識別されるユーザー定義リソース プールを使用するすべてのワークロード グループに影響します。

アクセス許可

CONTROL SERVER アクセス許可が必要です。

次の例では、MAX_CPU_PERCENTを除き、default プールのすべての現在のリソース プール設定を保持します。これは 25% に変更されます。

ALTER RESOURCE POOL [default] WITH (MAX_CPU_PERCENT = 25);

ALTER RESOURCE GOVERNOR RECONFIGURE;

次の例では、adhocPool リソース プールを次のように変更します。

  • それぞれ、MIN_CPU_PERCENTMIN_MEMORY_PERCENT を使用して、CPU の 10% と 5% のクエリ ワークスペース メモリを予約します。
  • MAX_MEMORY_PERCENTを使用して、15% のクエリ ワークスペースのメモリ制限を設定します。
  • それぞれ、MAX_CPU_PERCENTCAP_CPU_PERCENT を使用して、20% のソフト CPU 上限を 30% のハード CPU 上限に設定します。
  • AFFINITY SCHEDULERを使用して、プールを論理 CPU の 2 つの範囲 (0 ~ 63 および 128 から 191) にアフィニティ化します。

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

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

ALTER RESOURCE GOVERNOR RECONFIGURE;