ALTER WORKLOAD GROUP (Transact-SQL)ALTER WORKLOAD GROUP (Transact-SQL)

適用対象: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse APPLIES TO: yesSQL Server noAzure SQL Database noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

既存の Resource Governor ワークロード グループの構成を変更します。必要に応じて、そのワークロード グループを Resource Governor リソース プールに割り当てることもできます。Changes an existing Resource Governor workload group configuration, and optionally assigns it to a Resource Governor resource pool.

トピック リンク アイコン Transact-SQL 構文表記規則Topic link icon Transact-SQL Syntax Conventions.

構文Syntax

ALTER WORKLOAD GROUP { group_name | "default" }  
[ WITH  
    ([ IMPORTANCE = { LOW | MEDIUM | HIGH } ]  
      [ [ , ] REQUEST_MAX_MEMORY_GRANT_PERCENT = value ]  
      [ [ , ] REQUEST_MAX_CPU_TIME_SEC = value ]  
      [ [ , ] REQUEST_MEMORY_GRANT_TIMEOUT_SEC = value ]   
      [ [ , ] MAX_DOP = value ]  
      [ [ , ] GROUP_MAX_REQUESTS = value ] )  
 ]  
[ USING { pool_name | "default" } ]  
[ ; ]  

引数Arguments

group_name | "default"group_name | "default"
既存のユーザー定義のワークロード グループの名前か、リソース ガバナーの既定のワークロード グループを指定します。Is the name of an existing user-defined workload group or the Resource Governor default workload group.

注意

SQL ServerSQL Server のインストール時に、リソース ガバナーにより "既定の" グループと内部のグループが作成されます。Resource Governor creates the "default" and internal groups when SQL ServerSQL Server is installed.

オプションの "default" を ALTER WORKLOAD GROUP で使用する場合は、システム予約語の DEFAULT と競合しないように引用符 ("") または角かっこ ([]) で囲む必要があります。The option "default" must be enclosed by quotation marks ("") or brackets ([]) when used with ALTER WORKLOAD GROUP to avoid conflict with DEFAULT, which is a system reserved word. 詳細については、「データベース識別子」を参照してください。For more information, see Database Identifiers.

注意

定義済みのワークロード グループおよびリソース プールはすべて、"default" などの小文字の名前を使用しています。Predefined workload groups and resource pools all use lowercase names, such as "default". 大文字と小文字を区別する照合順序を使用するサーバーでは、これを考慮する必要があります。This should be taken into account for servers that use case-sensitive collation. SQL_Latin1_General_CP1_CI_AS など、大文字と小文字を区別しない照合順序を使用するサーバーでは、"default" と "Default" が同じものと見なされます。Servers with case-insensitive collation, such as SQL_Latin1_General_CP1_CI_AS, will treat "default" and "Default" as the same.

IMPORTANCE = { LOW | MEDIUM | HIGH }IMPORTANCE = { LOW | MEDIUM | HIGH }
ワークロード グループでの要求の相対的な重要度を指定します。Specifies the relative importance of a request in the workload group. 重要度は次のいずれかです。Importance is one of the following:

  • LOWLOW
  • MEDIUM (既定)MEDIUM (default)
  • HIGHHIGH

注意

各重要度の設定は、内部に計算用の数値として格納されます。Internally each importance setting is stored as a number that is used for calculations.

IMPORTANCE は、リソース プールに対してローカルです。同じリソース プール内の異なる重要度のワークロード グループは互いに影響しますが、別のリソース プールのワークロード グループには影響しません。IMPORTANCE is local to the resource pool; workload groups of different importance inside the same resource pool affect each other, but do not affect workload groups in another resource pool.

REQUEST_MAX_MEMORY_GRANT_PERCENT = value REQUEST_MAX_MEMORY_GRANT_PERCENT = value
1 つの要求にプールから割り当てられる最大メモリ量を指定します。Specifies the maximum amount of memory that a single request can take from the pool. value は、MAX_MEMORY_PERCENT で指定したリソース プールのサイズが基準になります。value is a percentage relative to the resource pool size specified by MAX_MEMORY_PERCENT.

valueSQL Server 2017 (14.x)SQL Server 2017 (14.x) までの整数と SQL Server 2019 (15.x)SQL Server 2019 (15.x) で始まる float です。value is an integer up to SQL Server 2017 (14.x)SQL Server 2017 (14.x) and a float starting with SQL Server 2019 (15.x)SQL Server 2019 (15.x). 既定値は 25 です。Default value is 25. value の許容範囲は 1 ~ 100 です。The allowed range for value is from 1 through 100.

注意

指定した量のみがクエリの実行時に許可されるメモリとして割り当てられます。The amount specified only refers to query execution grant memory.

重要

value を 0 に設定すると、ユーザー定義のワークロード グループでは SORT と HASH JOIN 操作を含むクエリが実行されなくなります。Setting value to 0 prevents queries with SORT and HASH JOIN operations in user-defined workload groups from running.

同時に他のクエリが実行されているとサーバーが空きメモリを十分に確保できない可能性があるため、value を 70 より大きな値に設定することはお勧めしません。It is not recommended to set value greater than 70 because the server may be unable to set aside enough free memory if other concurrent queries are running. これによってやがては、クエリの時間切れエラー 8645 が発生します。This may eventually lead to query time-out error 8645.

注意

クエリのメモリ要求がこのパラメーターによって指定されている制限を超えると、サーバーは次のように対応します。If the query memory requirements exceed the limit that is specified by this parameter, the server does the following:

  • ユーザー定義のワークロード グループでは、メモリ要求が制限より低くなるか、並列処理の次数が 1 になるまで、サーバーはクエリの並列処理の次数を下げます。For user-defined workload groups, the server tries to reduce the query degree of parallelism until the memory requirement falls under the limit, or until the degree of parallelism equals 1. それでもクエリのメモリ要求が制限を超える場合は、エラー 8657 が発生します。If the query memory requirement is still greater than the limit, error 8657 occurs.

  • 内部および既定のワークロード グループでは、そのクエリに必要なメモリの確保がサーバーによって許可されます。For internal and default workload groups, the server permits the query to obtain the required memory.

サーバーに十分な物理メモリがない場合は、どちらの場合も時間切れエラー 8645 が発生する可能性があります。Be aware that both cases are subject to time-out error 8645 if the server has insufficient physical memory.

REQUEST_MAX_CPU_TIME_SEC = value REQUEST_MAX_CPU_TIME_SEC = value
要求が使用できる最大 CPU 時間を秒単位で指定します。Specifies the maximum amount of CPU time, in seconds, that a request can use. value は、0 または正の整数にする必要があります。value must be 0 or a positive integer. value の既定の設定が 0 の場合は、無制限を示します。The default setting for value is 0, which means unlimited.

注意

既定では、リソース ガバナーでは最大時間を超過しても、要求は継続されます。By default, Resource Governor will not prevent a request from continuing if the maximum time is exceeded. ただし、イベントが生成されます。However, an event will be generated. 詳細については、「CPU Threshold Exceeded イベント クラス」を参照してください。For more information, see CPU Threshold Exceeded Event Class.

重要

SQL Server 2016 (13.x)SQL Server 2016 (13.x) SP2 および SQL Server 2017 (14.x)SQL Server 2017 (14.x) CU3 以降では、トレース フラグ 2422 を使用すると、最大時間を超えたときにリソース ガバナーが要求を中止します。Starting with SQL Server 2016 (13.x)SQL Server 2016 (13.x) SP2 and SQL Server 2017 (14.x)SQL Server 2017 (14.x) CU3, and using trace flag 2422, Resource Governor will abort a request when the maximum time is exceeded.

REQUEST_MEMORY_GRANT_TIMEOUT_SEC =valueREQUEST_MEMORY_GRANT_TIMEOUT_SEC =value
メモリ許可 (作業バッファー メモリ) が使用可能になるのをクエリが待機できる最大時間を秒単位で指定します。Specifies the maximum time, in seconds, that a query can wait for memory grant (work buffer memory) to become available.

注意

メモリ許可のタイムアウトに達しても、常にクエリが失敗するとは限りません。A query does not always fail when memory grant time-out is reached. クエリが失敗するのは、同時実行クエリ数が多すぎる場合だけです。A query will only fail if there are too many concurrent queries running. それ以外の場合、クエリは最小限のメモリ許可しか取得できないので、クエリのパフォーマンスが低下します。Otherwise, the query may only get the minimum memory grant, resulting in reduced query performance.

value は正の整数である必要があります。value must be a positive integer. value の既定の設定である 0 の場合、クエリ コストに基づく内部の計算を使用して、最大時間が決定されます。The default setting for value, 0, uses an internal calculation based on query cost to determine the maximum time.

MAX_DOP =value MAX_DOP =value
並列要求の最大 DOP (並列処理の次数) を指定します。Specifies the maximum degree of parallelism (DOP) for parallel requests. value は 0 または正の整数 (1 から 255) にする必要があります。value must be 0 or a positive integer, 1 though 255. value が 0 の場合、サーバーは並列処理の最大限度を選択します。When value is 0, the server chooses the max degree of parallelism. これは既定の推奨設定です。This is the default and recommended setting.

注意

データベース エンジンDatabase Engineによって MAX_DOP に設定される実際の値は、指定された値よりも小さくなる場合があります。The actual value that the データベース エンジンDatabase Engine sets for MAX_DOP by might be less than the specified value. 最終的な値は、min(255, number of CPUs) という式で決定されます。The final value is determined by the formula min(255, number of CPUs).

注意事項

MAX_DOP を変更すると、サーバーのパフォーマンスが低下することがあります。Changing MAX_DOP can adversely affect a server's performance. MAX_DOP を変更する必要がある場合には、1 つの NUMA ノードで示されているハードウェア スケジューラの最大数以下の値に設定することをお勧めします。If you must change MAX_DOP, we recommend that it be set to a value that is less than or equal to the maximum number of hardware schedulers that are present in a single NUMA node. MAX_DOP に 8 よりも大きな値を設定することはお勧めできません。We recommend that you do not set MAX_DOP to a value greater than 8.

MAX_DOP は次のように処理されます。MAX_DOP is handled as follows:

  • ワークロード グループの MAX_DOP を超えない限り、クエリ ヒントとしての MAX_DOP が有効になります。MAX_DOP as a query hint is honored as long as it does not exceed workload group MAX_DOP.

  • クエリ ヒントとしての MAX_DOP は、sp_configure の 'max degree of parallelism' を常にオーバーライドします。MAX_DOP as a query hint always overrides sp_configure 'max degree of parallelism'.

  • ワークロード グループの MAX_DOP は、sp_configure の 'max degree of parallelism' をオーバーライドします。Workload group MAX_DOP overrides sp_configure 'max degree of parallelism'.

  • コンパイル時にクエリが直列 (MAX_DOP = 1) としてマークされている場合は、ワークロード グループまたは sp_configure の設定にかかわらず、実行時に並列に変更することはできません。If the query is marked as serial (MAX_DOP = 1) at compile time, it cannot be changed back to parallel at run time regardless of the workload group or sp_configure setting.

DOP は、構成した後、許可メモリの不足時にのみ低くすることができます。After DOP is configured, it can only be lowered on grant memory pressure. ワークロード グループの再構成は、許可メモリ キューで待機している間は認識されません。Workload group reconfiguration is not visible while waiting in the grant memory queue.

GROUP_MAX_REQUESTS = value GROUP_MAX_REQUESTS = value
ワークロード グループで実行を許可する同時要求の最大数を指定します。Specifies the maximum number of simultaneous requests that are allowed to execute in the workload group. value は、0 または正の整数にする必要があります。value must be 0 or a positive integer. value の既定の設定である 0 の場合、無制限の要求が許可されます。The default setting for value, 0, allows unlimited requests. 同時要求の最大数に達した場合、そのグループのユーザーはログインできますが、同時要求数が指定した値を下回るまで待機状態になります。When the maximum concurrent requests are reached, a user in that group can log in, but is placed in a wait state until concurrent requests are dropped below the value specified.

USING { pool_name | "default" }USING { pool_name | "default" }
ワークロード グループを pool_name で識別されるユーザー定義のリソース プールに関連付けます。実質的には、これによってワークロード グループがリソース プールに配置されます。Associates the workload group with the user-defined resource pool identified by pool_name, which in effect puts the workload group in the resource pool. pool_name を指定していない場合、または USING 引数を使用していない場合、ワークロード グループは事前に定義されたリソース ガバナーの既定のプールに配置されます。If pool_name is not provided or if the USING argument is not used, the workload group is put in the predefined Resource Governor default pool.

オプションの "default" を ALTER WORKLOAD GROUP で使用する場合は、システム予約語の DEFAULT と競合しないように引用符 ("") または角かっこ ([]) で囲む必要があります。The option "default" must be enclosed by quotation marks ("") or brackets ([]) when used with ALTER WORKLOAD GROUP to avoid conflict with DEFAULT, which is a system reserved word. 詳細については、「データベース識別子」を参照してください。For more information, see Database Identifiers.

注意

オプションの "default" は、大文字と小文字が区別されます。The option "default" is case-sensitive.

RemarksRemarks

ALTER WORKLOAD GROUP は、既定のグループに対して使用できます。ALTER WORKLOAD GROUP is allowed on the default group.

ワークロード グループの構成の変更は、ALTER RESOURCE GOVERNOR RECONFIGURE を実行しないと有効になりません。Changes to the workload group configuration do not take effect until after ALTER RESOURCE GOVERNOR RECONFIGURE is executed. プランを変更し、設定に影響する場合、新しい設定は、DBCC FREEPROCCACHE (pool_name) の実行後にのみ、前にキャッシュされたプランに反映されます。この pool_name は、ワークロード グループが関連付けられているリソース ガバナー リソース プールの名前です。When changing a plan affecting setting, the new setting will only take effect in previously cached plans after executing DBCC FREEPROCCACHE (pool_name), where pool_name is the name of a Resource Governor resource pool on which the workload group is associated with.

  • MAX_DOP を 1 に変更する場合、並列プランは直列モードで実行できるため、DBCC FREEPROCCACHE を実行する必要はありません。If changing MAX_DOP to 1, executing DBCC FREEPROCCACHE is not required because parallel plans can run in serial mode. ただし、直列プランとしてコンパイルされたプランほど効率的ではない可能性があります。However, it may not be as efficient as a plan compiled as a serial plan.

  • MAX_DOP を 1 から 0、または 1 より大きい値に変更する場合、DBCC FREEPROCCACHE を実行する必要はありません。If changing MAX_DOP from 1 to 0 or a value greater than 1, executing DBCC FREEPROCCACHE is not required. ただし、直列プランは並列で実行できません。そのため、個々のキャッシュを消去すると、場合によっては、新しいプランを並列処理でコンパイルできます。However, serial plans cannot run in parallel, so clearing the respective cache will allow new plans to potentially be compiled using parallelism.

注意事項

複数のワークロード グループに関連付けられているリソース プールからキャッシュされているプランを消去すると、ユーザー定義のリソース プールが pool_name で識別されているすべてのワークロード グループに影響します。Clearing cached plans from a resource pool that is associated with more than one workload group will affect all workload groups with the user-defined resource pool identified by pool_name.

DDL ステートメントを実行する場合、Resource Governor の状態について詳しく理解しておくことをお勧めします。When executing DDL statements, we recommend that you be familiar with Resource Governor states. 詳細については、「リソース ガバナー」を参照してください。For more information, see Resource Governor.

REQUEST_MEMORY_GRANT_PERCENT:SQL Server 2005 (9.x)SQL Server 2005 (9.x)インデックスの作成では、パフォーマンスの改善のために最初に付与されたのよりも多くのワークスペース メモリを使用することが許可されています。REQUEST_MEMORY_GRANT_PERCENT: In SQL Server 2005 (9.x)SQL Server 2005 (9.x), index creation is allowed to use more workspace memory than initially granted for improved performance. この特別な処理は、今後のバージョンのリソース ガバナーでもサポートされますが、最初のメモリ許可も追加のメモリ許可もリソース プール設定とワークロード グループ設定によって制限されます。This special handling is supported by Resource Governor in later versions, however, the initial grant and any additional memory grant are limited by resource pool and workload group settings.

パーティション テーブルのインデックス作成Index Creation on a Partitioned Table

非固定パーティション テーブルのインデックス作成によって消費されるメモリは、含まれるパーティションの数に比例します。The memory consumed by index creation on non-aligned partitioned table is proportional to the number of partitions involved. 必要なメモリの合計が、リソース ガバナーのワークロード グループの設定によって課せられているクエリごとの制限 (REQUEST_MAX_MEMORY_GRANT_PERCENT) を超えると、インデックス作成の実行に失敗します。If the total required memory exceeds the per-query limit (REQUEST_MAX_MEMORY_GRANT_PERCENT) imposed by the Resource Governor workload group setting, this index creation may fail to execute. "default" ワークロード グループでは、SQL Server 2005 (9.x)SQL Server 2005 (9.x) との互換性のために、クエリごとの制限を超えてもクエリの開始に必要な最低限のメモリを使用できるようになっているので、そのようなクエリを実行するのに十分な量のメモリが "default" リソース プールに対して構成されていれば、同じインデックス作成を "default" ワークロード グループで実行できる可能性があります。Because the "default" workload group allows a query to exceed the per-query limit with the minimum required memory to start for SQL Server 2005 (9.x)SQL Server 2005 (9.x) compatibility, the user may be able to run the same index creation in "default" workload group, if the "default" resource pool has enough total memory configured to run such query.

アクセス許可Permissions

CONTROL SERVER 権限が必要です。Requires CONTROL SERVER permission.

使用例Examples

次の例は、既定のグループの要求の重要度を MEDIUM から LOW に変更する方法を示しています。The following example shows how to change the importance of requests in the default group from MEDIUM to LOW.

ALTER WORKLOAD GROUP "default"  
WITH (IMPORTANCE = LOW);  
GO  
ALTER RESOURCE GOVERNOR RECONFIGURE;  
GO  

次の例は、ワークロード グループを現在のプールから既定のプールに移動する方法を示しています。The following example shows how to move a workload group from the pool that it's in to the default pool.

ALTER WORKLOAD GROUP adHoc  
USING [default];  
GO  
ALTER RESOURCE GOVERNOR RECONFIGURE;  
GO  

参照See Also

リソース ガバナー Resource Governor
CREATE WORKLOAD GROUP (Transact-SQL) CREATE WORKLOAD GROUP (Transact-SQL)
DROP WORKLOAD GROUP (Transact-SQL) DROP WORKLOAD GROUP (Transact-SQL)
CREATE RESOURCE POOL (Transact-SQL) CREATE RESOURCE POOL (Transact-SQL)
ALTER RESOURCE POOL (Transact-SQL) ALTER RESOURCE POOL (Transact-SQL)
DROP RESOURCE POOL (Transact-SQL) DROP RESOURCE POOL (Transact-SQL)
ALTER RESOURCE GOVERNOR (Transact-SQL)ALTER RESOURCE GOVERNOR (Transact-SQL)