SQL Server リソース ガバナーのリソース プールは、データベース エンジン インスタンスの物理リソースのサブセットを表します。 各リソース プールは、1 つまたは複数のワークロード グループを含めることができます。 セッションの起動時に、リソース ガバナーの分類子によって、セッションは指定されたワークロード グループに割り当てられます。セッションの実行にはワークロード グループに割り当てられたリソースを使用する必要があります。
リソース プールの概念
リソース プール (プール) は、サーバーの物理リソースを表します。 プールは、SQL Server インスタンス内部の仮想 SQL Server インスタンスと考えることができます。
プールは 2 つの部分で構成されます。 1 つは他のプールと重複しない部分であり、最小限のリソース予約をサポートします。 もう 1 つは他のプールと共有される部分であり、最大限のリソース消費をサポートします。 このリリースのリソース ガバナーでは、各リソースに次のいずれかを指定することで、プール リソースが設定されます。
CPU の最小値、最大値、または上限値
メモリの最小値または最大値
最小値と最大値はそれぞれ、上記の各リソースについて、プールで最低限保証されるリソースの可用性およびプールの最大サイズを表します。
CPU の上限値はハードの最大値です。 この値を上回る CPU 容量があっても使用されません。
すべてのプールの最小値の合計が、サーバー リソースの 100% を超えないようにする必要があります。 最大値と上限値は、最小値~ 100% (両方を含む) の間で設定できます。
プールに 0 以外の最小値が定義されている場合は、他のプールの有効な最大値が再調整されます。 プールに設定されている最大値または他のプールの最小値の合計のいずれか大きい方が、100% から引かれます。
次の表は、前述の概念を説明しています。 表に示されているのは、内部プール、既定のプール、および 2 つのユーザー定義プールの設定です。 有効な最大 % および共有 % の計算には、次の式が使用されます。
min(X,Y) は、X と Y の小さい方の値を意味します。
sum(X) はすべてのプールの X 値の合計を意味します。
共有 % の合計 = 100 - sum(最小 %)。
有効な最大 % = min(X,Y)。
共有 % = 有効な最大 % - 最小 %。
プール名 |
最小 % の設定 |
最大 % の設定 |
有効な最大 % の計算値 |
共有 % の計算値 |
解説 |
|---|---|---|---|---|---|
内部 |
0 |
100 |
100 |
0 |
内部プールには有効な最大 % と共有 % が適用されません。 |
既定 |
0 |
100 |
30 |
30 |
有効な最大値の計算式は、min(100,100-(20+50)) = 30 です。 共有 % の計算式は、有効な最大値 - 最小値 = 30 です。 |
プール 1 |
20 |
100 |
50 |
30 |
有効な最大値の計算式は、min(100,100-50) = 50 です。 共有 % の計算式は、有効な最大値 - 最小値 = 30 です。 |
プール 2 |
50 |
70 |
70 |
20 |
有効な最大値の計算式は、min(70,100-20) = 70 です。 共有 % の計算式は、有効な最大値 - 最小値 = 20 です。 |
前のテーブルを例として、別のプールが作成されたときに行われる調整について説明します。 作成するのはプール 3 で、その最小 % の設定は 5 です。
プール名 |
最小 % の設定 |
最大 % の設定 |
有効な最大 % の計算値 |
共有 % の計算値 |
解説 |
|---|---|---|---|---|---|
内部 |
0 |
100 |
100 |
0 |
内部プールには有効な最大 % と共有 % が適用されません。 |
既定 |
0 |
100 |
25 |
25 |
有効な最大値の計算式は、min(100,100-(20+50+5)) = 25 です。 共有 % の計算式は、有効な最大値 - 最小値 = 25 です。 |
プール 1 |
20 |
100 |
45 |
25 |
有効な最大値の計算式は、min(100,100-55) = 45 です。 共有 % の計算式は、有効な最大値 - 最小値 = 25 です。 |
プール 2 |
50 |
70 |
70 |
20 |
有効な最大値の計算式は、min(70,100-25) = 70 です。 共有 % の計算式は、有効な最大値 - 最小値 = 20 です。 |
プール 3 |
5 |
100 |
30 |
25 |
有効な最大値の計算式は、min(100,100-70) = 30 です。 共有 % の計算式は、有効な最大値 - 最小値 = 25 です。 |
プールの共有部分は、使用可能なリソースの行き先を示すために使用されます。 ただし、リソースが消費されると、共有部分は指定のプールに移動し、共有されません。 これにより、指定のプールに要求がなく、かつそのプールに対して構成されたリソースを他のプールのために解放できる場合は、リソース使用率が向上する可能性があります。
プール構成の極端なケースを次に示します。
すべてのプールで最小値が定義され、その合計がサーバー リソースの 100% を表しているケース。 この場合、有効な最大値は最小値と等しくなります。 このとき、いずれかのプール内でサーバー リソースが消費されているかどうかにかかわらず、リソースを重複しない断片に分割した場合と同等の状態になります。
すべてのプールの最小値がゼロであるケース。 すべてのプールが使用可能なリソースの確保を求めて競合し、それぞれの最終的なサイズが各プールのリソース消費に基づいて決まります。 ポリシーなどその他の要因も、最終的なプール サイズの決定に影響します。
リソース ガバナーでは、内部プールと既定のプールの 2 つのリソース プールが事前に定義されます。
内部プール
内部プールは、SQL Server 自体が消費するリソースを表します。 このプールは、常に内部グループのみを含んでおり、一切変更できません。 内部プールによるリソースの消費は制限されません。 このプール内のワークロードはサーバーの機能に不可欠と見なされ、内部プールが他のプールを圧迫して他のプールに設定されている制限に違反することになっても、リソース ガバナーはこれを許可します。
注 |
|---|
内部プールおよび内部グループのリソース使用量は、全体的なリソース使用量から差し引かれません。 パーセンテージは、使用可能なリソース全体から計算されます。 |
既定のプール
既定のプールは、事前に定義される最初のユーザー プールです。 構成が行われる前の既定のプールには、既定のグループのみが含まれています。 既定のプールは作成または削除できませんが、変更することは可能です。 既定のプールには、既定のグループ以外にユーザー定義グループを含めることができます。
注 |
|---|
既定のグループは変更できますが、既定のプールから移動することはできません。 |
ユーザー定義のリソース プール
リソース ガバナーには、リソース プールを作成、変更、および削除するための DDL ステートメントが用意されています。
リソース プール タスク
タスクの説明 |
トピック |
|---|---|
リソース プールを作成する方法について説明します。 |
|
リソース プールの設定を変更する方法について説明します。 |
|
リソース プールを削除する方法について説明します。 |
注