リソース ガバナー リソース プールResource Governor Resource Pool

このトピックに適用されますはいSQL ServerありませんAzure SQL DatabaseありませんAzure SQL Data Warehouseありません。並列データ ウェアハウスTHIS TOPIC APPLIES TO: yesSQL ServernoAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

SQL ServerSQL Server リソース ガバナーのリソース プールは、 データベース エンジンDatabase Engineインスタンスの物理リソースのサブセットを表します。In the SQL ServerSQL Server Resource Governor, a resource pool represents a subset of the physical resources of an instance of the データベース エンジンDatabase Engine. リソース ガバナーを使用すると、受信するアプリケーション要求がリソース プール内で使用できる CPU、物理 IO、およびメモリの量に制限を指定できます。Resource Governor enables you to specify limits on the amount of CPU, physical IO, and memory that incoming application requests can use within the resource pool. 各リソース プールは、1 つまたは複数のワークロード グループを含めることができます。Each resource pool can contain one or more workload groups. セッションの起動時に、リソース ガバナーの分類子によって、セッションは指定されたワークロード グループに割り当てられます。セッションの実行にはワークロード グループに割り当てられたリソースを使用する必要があります。When a session is started, the Resource Governor classifier assigns the session to a specific workload group, and the session must run using the resources assigned to the workload group.

リソース プールの概念Resource Pool Concepts

リソース プール (プール) は、サーバーの物理リソースを表します。A resource pool, or pool, represents the physical resources of the server. プールは、 SQL ServerSQL Server インスタンス内部の仮想 SQL ServerSQL Server インスタンスと考えることができます。You can think of a pool as a virtual SQL ServerSQL Server instance inside of a SQL ServerSQL Server instance. プールは 2 つの部分で構成されます。A pool has two parts. 1 つは他のプールと重複しない部分であり、最小限のリソース予約をサポートします。One part does not overlap with other pools, which enables minimum resource reservation. もう 1 つは他のプールと共有される部分であり、最大限のリソース消費をサポートします。The other part is shared with other pools, which supports maximum possible resource consumption. プール リソースを定義するには、各リソース (CPU、メモリ、および物理 I/O) で次の設定の 1 つ以上を指定します。The pool resources are defined by specifying one or more of the following settings for each resource (CPU, memory, and physical IO):

  • MIN_CPU_PERCENT および MAX_CPU_PERCENTMIN_CPU_PERCENT and MAX_CPU_PERCENT

    これらの設定は、CPU の競合がある場合にリソース プールのすべての要求に最大限および最小限保証される平均 CPU 帯域幅です。These settings are the minimum and maximum guaranteed average CPU bandwidth for all requests in the resource pool when there is CPU contention. これらの設定を使用すると、各ワークロードのニーズに基づく、複数のワークロードの予測可能な CPU リソース使用率を確立できます。You can use these settings to establish predictable CPU resource usage for multiple workloads that is based on the needs of each workload. たとえば、会社の営業部門とマーケティング部門で同じデータベースを共有するとします。For example, assume the Sales and Marketing departments in a company share the same database. 営業部門には、優先度の高いクエリで CPU を集中的に使用するワークロードがあります。The Sales department has a CPU-intensive workload with high-priority queries. マーケティング部門にも CPU を集中的に使用するワークロードがありますが、クエリの優先度は低くなっています。The Marketing department also has a CPU-intensive workload, but has lower-priority queries. 各部門に個別のリソース プールを作成することにより、営業部門のリソース プールに対して CPU の割合の 最小値 70 を、マーケティング部門のリソース プールに対して CPU の割合の 最大値 30 を割り当てることができます。By creating a separate resource pool for each department, you can assign a minimum CPU percentage of 70 for the Sales resource pool and a maximum CPU percentage of 30 for the Marketing resource pool. これにより、営業部門のワークロードは必要な CPU リソースを受け取り、マーケティング部門のワークロードは営業部門のワークロードの CPU 要求から分離されるようになります。This ensures that the Sales workload receives the CPU resources it requires and the Marketing workload is isolated from the CPU demands of the Sales workload. CPU の最大使用率が便宜上の最大値であることに注意してください。Note that the maximum CPU percentage is an opportunistic maximum. 使用可能な CPU 容量がある場合、ワークロードではそれを最大 100% まで使用します。If there is available CPU capacity, the workload uses it up to 100 percent. 最大値が適用されるのは、CPU リソースに競合が発生した場合のみです。The maximum value only applies when there is contention for CPU resources. この例では、営業部門のワークロードがオフに切り替わると、マーケティング部門のワークロードは必要に応じて 100% の CPU を使用できます。In this example, if the Sales workload is switched off, the Marketing workload can use 100 percent of the CPU if needed.

  • CAP_CPU_PERCENTCAP_CPU_PERCENT

    リソース プールのすべての要求に対する CPU 帯域幅にハード キャップの制限を設定します。This settings is a hard cap limit on the CPU bandwidth for all requests in the resource pool. プールに関連付けられているワークロードは、使用する CPU 処理量が MAX_CPU_PERCENT の値を超えることはできても (利用可能な場合)、CAP_CPU_PERCENT の値を超えることはできません。Workloads associated with the pool can use CPU capacity above the value of MAX_CPU_PERCENT if it is available, but not above the value of CAP_CPU_PERCENT. 上記の例の場合に、マーケティング部門がリソース使用量に対して課金されているとします。Using the example above, lets assume that the Marketing department is being charged for their resource usage. マーケティング部門は予測可能な請求情報を求めていますが、CPU のうち最大 30% までしか料金を支払いたくありません。They want predictable billing and do not want to pay for more than 30 percent of the CPU. これを実現するには、マーケティング部門のリソース プールの CAP_CPU_PERCENT を 30 に設定します。This can be accomplished by setting the CAP_CPU_PERCENT to 30 for the Marketing resource pool.

  • MIN_MEMORY_PERCENT および MAX_MEMORY_PERCENTMIN_MEMORY_PERCENT and MAX_MEMORY_PERCENT

    リソース プール用に確保され、他のリソース プールとは共有できないメモリ量の最大値と最小値を設定します。These settings are the minimum and maximum amount of memory reserved for the resource pool that can not be shared with other resource pools. ここで参照されるメモリは、クエリ実行許可メモリであり、バッファー プール メモリ (データ ページやインデックス ページなど) ではありません。The memory referenced here is query execution grant memory, not buffer pool memory (for example, data and index pages). プールの最小メモリ値を設定することは、このリソース プールで実行される可能性のあるすべての要求に対して、指定されたメモリの割合を使用できるようにすることを意味します。Setting a minimum memory value for a pool means that you are ensuring that the percentage of memory specified will be available for any requests that might run in this resource pool. これは、MIN_CPU_PERCENT と比較して重要な要因です。この場合、指定されたリソース プールでは、このプールに属しているワークロード グループの要求がない場合でも、メモリが残っている可能性があります。This is an important differentiator compared to MIN_CPU_PERCENT, because in this case memory may remain in the given resource pool even when the pool does not have any requests in the workload groups belonging to this pool. したがって、この設定を使用する際は十分に注意することが重要です。アクティブな要求がない場合も、このメモリはその他のプールで使用できなくなるためです。Therefore it is crucial that you be very careful when using this setting, because this memory will be unavailable for use by any other pool, even when there are no active requests. プールの最大メモリ値を設定することは、要求がこのプールで実行されているときに、メモリ全体のうちこの割合を超えるメモリを取得することがないことを意味します。Setting a maximum memory value for a pool means that when requests are running in this pool, they will never get more than this percentage of overall memory.

  • AFFINITYAFFINITY

    この設定を使用すると、CPU リソースの分離を向上するために、リソース プールを 1 つ以上のスケジューラまたは NUMA ノードに関連付けることができます。This setting lets you affinitize a resource pool to one or more schedulers or NUMA nodes for greater isolation of CPU resources. 上記の営業とマーケティングのシナリオを使用して、営業部門がより分離された環境を必要とし、常に 100% の CPU コアを必要としているとします。Using the Sales and Marketing scenario above, lets assume that the Sales department needs a more isolated environment and wants 100 percent of a CPU core at all times. AFFINITY オプションを使用すると、営業部門とマーケティング部門のワークロードを異なる CPU でスケジュールできます。By using the AFFINITY option the Sales and Marketing workloads can be scheduled on different CPUs. マーケティング部門のプールの CAP_CPU_PERCENT がまだ設定されていると仮定すると、マーケティング部門のワークロードでは、引き続き 1 個のコアの最大 30% を使用するのに対し、営業部門のワークロードでは、他のコアの 100% を使用します。Assuming the CAP_CPU_PERCENT on the Marketing pool is still in place, the Marketing workload continues to use a maximum of 30 percent of one core, while the Sales workload uses 100 percent of the other core. 営業部門とマーケティング部門のワークロードに関しては、2 つの分離されたコンピューターで実行されています。As far as the Sales and Marketing workloads are concerned, they are running on two isolated machines.

  • MIN_IOPS_PER_VOLUME および MAX_IOPS_PER_VOLUMEMIN_IOPS_PER_VOLUME and MAX_IOPS_PER_VOLUME

    リソース プールのディスク ボリュームごとに、1 秒あたりの物理 IO 操作 (IOPS) の最小値と最大値を設定します。These settings are the minimum and maximum physical IO operations per second (IOPS) per disk volume for a resource pool. これらの設定を使用すると、特定のリソース プールのユーザー スレッドに対して発行された物理 IO を制御できます。You can use these settings to control the physical IOs issued for user threads for a given resource pool. たとえば、営業部門では、大きなバッチで月末の報告書をいくつか生成します。For example, the Sales department generates several end-of-month reports in large batches. これらのバッチ内のクエリでは、ディスク ボリュームが飽和し、データベース内のその他の優先度の高いワークロードのパフォーマンスに影響を与える可能性のある IO が生成される可能性があります。The queries in these batches can generate IOs that can saturate the disk volume and impact the performance of other higher priority workloads in the database. このワークロードを分離するために、営業部門のリソース プールでは MIN_IOPS_PER_VOLUME が 20 に設定され、MAX_IOPS_PER_VOLUME が 100 に設定されます。これにより、ワークロードに対して発行できる IO のレベルが制御されます。To isolate this workload, the MIN_IOPS_PER_VOLUME is set to 20 and the MAX_IOPS_PER_VOLUME is set to 100 for the Sales department resource pool, which controls the level of IOs that can issued for the workload.

CPU またはメモリを構成する際には、すべてのプールの最小値の合計が、サーバー リソースの 100% を超えないようにする必要があります。When configuring CPU or Memory, the sum of MIN values across all pools cannot exceed 100 percent of the server resources. また、CPU またはメモリを構成する場合、最大値と上限値は、最小値~ 100% (両方を含む) の間で設定できます。In addition, when configuring CPU or Memory, MAX and CAP values can be set anywhere in the range between MIN and 100 percent inclusive.

プールに 0 以外の最小値が定義されている場合は、他のプールの有効な最大値が再調整されます。If a pool has a nonzero MIN defined, the effective MAX value of other pools is readjusted. プールに設定されている最大値または他のプールの最小値の合計のいずれか大きい方が、100% から引かれます。The minimum of the configured MAX value of a pool and the sum of the MIN values of other pools is subtracted from 100 percent.

次の表は、前述の概念をいくつか説明しています。The following table illustrates a few of the preceding concepts. 表に示されているのは、内部プール、既定のプール、および 2 つのユーザー定義プールの設定です。The table shows the settings for the internal pool, the default pool, and two user-defined pools.

プール名Pool name 最小 % の設定MIN % setting 最大 % の設定MAX % setting 有効な最大 % の計算値Calculated effective MAX % 共有 % の計算値Calculated shared % 解説Comment
内部internal 00 100100 100100 00 内部プールには有効な最大 % と共有 % が適用されません。Effective MAX% and shared% are not applicable to the internal pool.
既定値 (default)default 00 100100 3030 3030 有効な最大値の計算式は、min(100,100-(20+50)) = 30 です。The effective MAX value is calculated as: min(100,100-(20+50)) = 30. 共有 % の計算式は、有効な最大値 - 最小値 = 30 です。The calculated shared % is effective MAX - MIN = 30.
プール 1Pool 1 2020 100100 5050 3030 有効な最大値の計算式は、min(100,100-50) = 50 です。The effective MAX value is calculated as: min(100,100-50) = 50. 共有 % の計算式は、有効な最大値 - 最小値 = 30 です。The calculated Shared % is Effective MAX - MIN = 30.
プール 2Pool 2 5050 7070 7070 2020 有効な最大値の計算式は、min(70,100-20) = 70 です。The effective MAX value is calculated as: min(70,100-20) = 70. 共有 % の計算式は、有効な最大値 - 最小値 = 20 です。The calculated Shared % is Effective MAX - MIN = 20.

上のテーブルの有効な最大 % および共有 % の計算には、次の式が使用されます。The following formulas are used for calculating the effective MAX% and the shared % in the table above:

  • min(X,Y) は、X と Y の小さい方の値を意味します。Min(X,Y) means the smaller value of X and Y.

  • sum(X) はすべてのプールの X 値の合計を意味します。Sum(X) means the sum of value X across all pools.

  • 共有 % の合計 = 100 - sum(最小 %)。Total shared % = 100 - sum(MIN %).

  • 有効な最大 % = min(X,Y)。Effective MAX % = min(X,Y).

  • 共有 % = 有効な最大 % - 最小 %。Shared % = Effective MAX % - MIN %.

前のテーブルを例として、別のプールが作成されたときに行われる調整について説明します。Using the preceding table as an example, we can further illustrate the adjustments that take place when another pool is created. 作成するのはプール 3 で、その最小 % の設定は 5 です。This pool is Pool 3 and has a MIN % setting of 5.

プール名Pool name 最小 % の設定MIN % setting 最大 % の設定MAX % setting 有効な最大 % の計算値Calculated effective MAX % 共有 % の計算値Calculated shared % 解説Comment
内部internal 00 100100 100100 00 内部プールには有効な最大 % と共有 % が適用されません。Effective MAX % and shared % are not applicable to the internal pool.
既定値 (default)default 00 100100 2525 2525 有効な最大値の計算式は、min(100,100-(20+50+5)) = 25 です。The effective MAX value is calculated as: min(100,100-(20+50+5)) = 25. 共有 % の計算式は、有効な最大値 - 最小値 = 25 です。The calculated shared % is Effective MAX - MIN = 25.
プール 1Pool 1 2020 100100 4545 2525 有効な最大値の計算式は、min(100,100-55) = 45 です。The effective MAX value is calculated as: min(100,100-55) = 45. 共有 % の計算式は、有効な最大値 - 最小値 = 25 です。The calculated Shared % is Effective MAX - MIN = 25.
プール 2Pool 2 5050 7070 7070 2020 有効な最大値の計算式は、min(70,100-25) = 70 です。The effective MAX value is calculated as: min(70,100-25) = 70. 共有 % の計算式は、有効な最大値 - 最小値 = 20 です。The calculated Shared % is effective MAX - MIN = 20.
プール 3Pool 3 55 100100 3030 2525 有効な最大値の計算式は、min(100,100-70) = 30 です。The effective MAX value is calculated as: min(100,100-70) = 30. 共有 % の計算式は、有効な最大値 - 最小値 = 25 です。The calculated Shared % is effective MAX - MIN = 25.

プールの共有部分は、使用可能なリソースの行き先を示すために使用されます。The shared part of the pool is used to indicate where available resources can go if resources are available. ただし、リソースが消費されると、共有部分は指定のプールに移動し、共有されません。However, when resources are consumed they go to the specified pool and are not shared. これにより、指定のプールに要求がなく、かつそのプールに対して構成されたリソースを他のプールのために解放できる場合は、リソース使用率が向上する可能性があります。This may improve resource utilization in cases where there are no requests in a given pool and the resources configured to the pool can be freed up for other pools.

プール構成の極端なケースを次に示します。Some extreme cases of pool configuration are:

  • すべてのプールで最小値が定義され、その合計がサーバー リソースの 100% を表しているケース。All pools define minimums that in total represent 100 percent of the server resources. この場合、有効な最大値は最小値と等しくなります。In this case the effective maximums are equal to minimums. このとき、いずれかのプール内でサーバー リソースが消費されているかどうかにかかわらず、リソースを重複しない断片に分割した場合と同等の状態になります。This is equivalent to dividing the server resources into non-overlapping pieces regardless of resources are consumed inside any given pool.

  • すべてのプールの最小値がゼロであるケース。All pools have zero minimums. すべてのプールが使用可能なリソースの確保を求めて競合し、それぞれの最終的なサイズが各プールのリソース消費に基づいて決まります。All the pools compete for available resources and their final sizes are based on resource consumption in each pool. ポリシーなどその他の要因も、最終的なプール サイズの決定に影響します。Other factors such as policies play a role in shaping the final pool size.

リソース ガバナーでは、内部プールと既定のプールの 2 つのリソース プールが事前に定義されます。Resource Governor predefines two resource pools, the internal pool and the default pool. 必要に応じて、プールを追加することもできます。You can add additional pools.

内部プールInternal Pool

内部プールは、 SQL ServerSQL Server 自体が消費するリソースを表します。The internal pool represents the resources consumed by the SQL ServerSQL Server itself. このプールは、常に内部グループのみを含んでおり、一切変更できません。This pool always contains only the internal group, and the pool is not alterable in any way. 内部プールによるリソースの消費は制限されません。Resource consumption by the internal pool is not restricted. このプール内のワークロードはサーバーの機能に不可欠と見なされ、内部プールが他のプールを圧迫して他のプールに設定されている制限に違反することになっても、リソース ガバナーはこれを許可します。Any workloads in the pool are considered critical for server function, and Resource Governor allows the internal pool to pressure other pools even if it means the violation of limits set for the other pools.

注意

内部プールおよび内部グループのリソース使用量は、全体的なリソース使用量から差し引かれません。The internal pool and internal group resource usage is not subtracted from the overall resource usage. パーセンテージは、使用可能なリソース全体から計算されます。Percentages are calculated from the overall resources available.

既定のプールDefault Pool

既定のプールは、事前に定義される最初のユーザー プールです。The default pool is the first predefined user pool. 構成が行われる前の既定のプールには、既定のグループのみが含まれています。Prior to any configuration the default pool only contains the default group. 既定のプールは作成または削除できませんが、変更することは可能です。The default pool cannot be created or dropped but it can be altered. 既定のプールには、既定のグループ以外にユーザー定義グループを含めることができます。The default pool can contain user-defined groups in addition to the default group. SQL Server 2016SQL Server 2016 以降では、ルーチンの SQL ServerSQL Server 操作用の既定のリソース プールと、R スクリプトの実行などの外部プロセス用の既定の外部リソース プールが用意されています。Beginning with SQL Server 2016SQL Server 2016 there is a default resource pool for routine SQL ServerSQL Server operations, and a default external resource pool for external processes, such as executing R scripts.

注意

既定のグループは変更できますが、既定のプールから移動することはできません。The default group is alterable but it cannot be moved out of the default pool.

外部プールExternal Pool

ユーザーは、外部プロセス用のリソースを定義する外部プールを定義できます。Users can define an external pool to define resources for the external processes. R Services の場合、具体的には rterm.exeBxlServer.exe およびそれらにより生成された他のプロセスが制御されます。For R Services, this specifically governs rterm.exe, BxlServer.exe and other processes spawned by them.

ユーザー定義のリソース プールUser-Defined Resource Pools

ユーザー定義のリソース プールは、環境内の特定のワークロードに対して作成するリソース プールです。User-defined resource pools are those that you create for specific workloads in your environment. リソース ガバナーには、リソース プールを作成、変更、および削除するための DDL ステートメントが用意されています。Resource Governor provides DDL statements for creating, changing, and dropping resource pools.

リソース プール タスクResource Pool Tasks

タスクの説明Task Description トピックTopic
リソース プールを作成する方法について説明します。Describes how to create a resource pool. リソース プールの作成Create a Resource Pool
リソース プールの設定を変更する方法について説明します。Describes how to change resource pool settings. リソース プールの設定の変更Change Resource Pool Settings
リソース プールを削除する方法について説明します。Describes how to delete a resource pool. リソース プールの削除Delete a Resource Pool

参照See Also

リソース ガバナー Resource Governor
リソース ガバナー ワークロード グループ Resource Governor Workload Group
リソース ガバナーの分類子関数 Resource Governor Classifier Function
テンプレートを使用してリソース ガバナーを構成する Configure Resource Governor Using a Template
リソース ガバナー プロパティの表示View Resource Governor Properties