CREATE WORKLOAD GROUP (Transact-SQL)CREATE WORKLOAD GROUP (Transact-SQL)

製品を選択するSelect a product

次の行で、興味のある製品の名前を選択します。その製品の情報だけが表示されます。In the following row, select the product name you're interested in, and only that product’s information is displayed.

* SQL Server *  * SQL Server *  

 

SQL Server と SQL Managed InstanceSQL Server and SQL Managed Instance

リソース ガバナー ワークロード グループを作成し、そのワークロード グループをリソース ガバナー リソース プールに関連付けます。Creates a Resource Governor workload group and associates the workload group with a Resource Governor resource pool. リソース ガバナーは、MicrosoftMicrosoftSQL ServerSQL Server のすべてのエディションで使用できるわけではありません。Resource Governor is not available in every edition of MicrosoftMicrosoftSQL ServerSQL Server. SQL ServerSQL Serverの各エディションでサポートされる機能の一覧については、「 SQL Server 2016 の各エディションがサポートする機能」を参照してください。For a list of features that are supported by the editions of SQL ServerSQL Server, see Features Supported by the Editions of SQL Server 2016.

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

構文Syntax

CREATE WORKLOAD GROUP group_name
[ 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" ]
    [ [ , ] EXTERNAL external_pool_name | "default" ] ]
    } ]
[ ; ]

引数Arguments

group_namegroup_name
ワークロード グループのユーザー定義の名前を指定します。Is the user-defined name for the workload group. group_name には、英数字を最大 128 文字まで使用できます。SQL ServerSQL Server のインスタンス内で一意である必要があり、識別子のルールに従っている必要があります。group_name is alphanumeric, can be up to 128 characters, must be unique within an instance of SQL ServerSQL Server, and must comply with the rules for identifiers.

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

  • 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 = valueREQUEST_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.

value は、SQL Server 2017 (14.x)SQL Server 2017 (14.x) までは整数であり、SQL Server 2019 (15.x)SQL Server 2019 (15.x) 以降と Azure SQL Managed Instance では 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) and in Azure SQL Managed Instance. 既定値は 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 = valueREQUEST_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 a memory grant (work buffer memory) to become available. value は、0 または正の整数にする必要があります。value must be 0 or a positive integer. value の既定の設定である 0 の場合、クエリ コストに基づく内部の計算を使用して、最大時間が決定されます。The default setting for value, 0, uses an internal calculation based on query cost to determine the maximum time.

注意

メモリ許可のタイムアウトに達しても、常にクエリが失敗するとは限りません。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.

MAX_DOP = valueMAX_DOP = value
並列クエリ実行に対する並列処理の最大限度 (MAXDOP) を指定します。Specifies the maximum degree of parallelism (MAXDOP) for parallel query execution. value は、0 または正の整数にする必要があります。value must be 0 or a positive integer. value の許容範囲は 0 から 64 です。The allowed range for value is from 0 through 64. value の既定の設定は 0 で、グローバル設定が使用されます。The default setting for value, 0, uses the global setting. MAX_DOP は次のように処理されます。MAX_DOP is handled as follows:

注意

ワークロード グループの MAX_DOP では、並列処理の最大限度に対するサーバー構成と、MAXDOP データベース スコープ構成がオーバーライドされます。Workload group MAX_DOP overrides the server configuration for max degree of parallelism and the MAXDOP database scoped configuration.

ヒント

これをクエリ レベルで行うには、MAXDOP クエリ ヒントを使用します。To accomplish this at the query level, use the MAXDOP query hint. ワークロード グループの MAX_DOP を超えない限り、クエリ ヒントとして並列処理の最大限度を設定することは有効です。Setting the maximum degree of parallelism as a query hint is effective as long as it does not exceed the workload group MAX_DOP. MAXDOP クエリ ヒントの値が Resource Governor を使用して構成されている値を超える場合、SQL Server データベース エンジンSQL Server Database Engine ではリソース ガバナーの MAX_DOP の値が使用されます。If the MAXDOP query hint value exceeds the value that is configured by using the Resource Governor, the SQL Server データベース エンジンSQL Server Database Engine uses the Resource Governor MAX_DOP value. MAXDOP クエリ ヒントでは常に、並列処理の最大限度のサーバー構成がオーバーライドされます。The MAXDOP query hint always overrides the server configuration for max degree of parallelism.

データベース レベルでこれを行うには、MAXDOP データベース スコープ構成を使用します。To accomplish this at the database level, use the MAXDOP database scoped configuration.

これをサーバー レベルで行うには、並列処理の最大限度 (MAXDOP) サーバー構成オプションを使用します。To accomplish this at the server level, use the max degree of parallelism (MAXDOP) server configuration option.

GROUP_MAX_REQUESTS = valueGROUP_MAX_REQUESTS = value
ワークロード グループで実行を許可する同時要求の最大数を指定します。Specifies the maximum number of simultaneous requests that are allowed to execute in the workload group. value には、0 または正の整数を指定する必要があります。value must be a 0 or a positive integer. value の既定の設定は 0 であり、これでは無制限の要求が許可されます。The default setting for value is 0, and 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. 実質的には、これによってワークロード グループがグループ リソースに配置されます。This 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" を USING で使用する場合は、引用符 ("") または角かっこ ([]) で囲む必要があります。"default" is a reserved word and when used with USING, must be enclosed by quotation marks ("") or brackets ([]).

注意

定義済みのワークロード グループおよびリソース プールではすべて、"default" などの小文字の名前が使用されています。Predefined workload groups and resource pools all use lower case 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.

EXTERNAL external_pool_name | "default"EXTERNAL external_pool_name | "default"
適用対象: SQL ServerSQL Server (SQL Server 2016 (13.x)SQL Server 2016 (13.x) 以降)。Applies to: SQL ServerSQL Server (starting with SQL Server 2016 (13.x)SQL Server 2016 (13.x)).

ワークロード グループには、外部リソース プールを指定できます。Workload group can specify an external resource pool. ワークロード グループを定義し、2 つのプールに関連付けることができます。You can define a workload group and associate with two pools:

  • SQL ServerSQL Server ワークロードおよびクエリのリソース プールA resource pool for SQL ServerSQL Server workloads and queries
  • 外部プロセス用の外部リソース プールAn external resource pool for external processes. 詳細については、「sp_execute_external_script (Transact-SQL)」を参照してください。For more information, see sp_execute_external_script (Transact-SQL).

解説Remarks

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

MAX_DOP の制限は、タスクごとに設定されます。The MAX_DOP limit is set per task. この設定は、要求ごとまたはクエリ制限ごとではありません。It is not a per request or per query limit. つまり、並列クエリ実行中に、1 つの要求で、スケジューラに割り当てられてた複数のタスクを生成することができます。This means that during a parallel query execution, a single request can spawn multiple tasks which are assigned to a scheduler. 詳細については、「スレッドおよびタスクのアーキテクチャ ガイド」を参照してください。For more information, see the Thread and Task Architecture Guide.

MAX_DOP が使用されていて、コンパイル時にクエリが直列としてマークされている場合は、ワークロード グループまたはサーバー構成の設定にかかわらず、実行時に並列に変更することはできません。When MAX_DOP is used and a query is marked as serial at compile time, it cannot be changed back to parallel at run time regardless of the workload group or server configuration setting. 構成後の MAX_DOP は、メモリの不足時にのみ低くすることができます。After MAX_DOP is configured, it can only be lowered due to memory pressure. ワークロード グループの再構成は、許可メモリ キューで待機している間は認識されません。Workload group reconfiguration is not visible while waiting in the grant memory queue.

パーティション テーブルのインデックス作成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. 必要なメモリの合計が、Resource Governor のワークロード グループの設定によって課せられているクエリごとの制限 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" ワークロード グループでは、クエリごとの制限を超えてもクエリの開始に必要な最低限のメモリを使用できるようになっているので、そのようなクエリを実行するのに十分な量のメモリが "default" リソース プールに対して構成されていれば、同じインデックス作成を "default" ワークロード グループで実行できる可能性があります。Because the "default" workload group allows a query to exceed the per-query limit with the minimum required memory, 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.

Example

Resource Governor の既定の設定を使用し、Resource Governor の既定のプールに配置される、newReports という名前のワークロード グループを作成します。Create a workload group named newReports which uses the Resource Governor default settings, and is in the Resource Governor default pool. この例では default プールを指定していますが、必須ではありません。The example specifies the default pool, but this is not required.

CREATE WORKLOAD GROUP newReports
WITH
    (REQUEST_MAX_MEMORY_GRANT_PERCENT = 2.5
      , REQUEST_MAX_CPU_TIME_SEC = 100
      , MAX_DOP = 4)    
USING "default" ;
GO

参照See Also

* SQL Database
Managed Instance *
 
* SQL Database
Managed Instance *
 

 

SQL Server と SQL Managed InstanceSQL Server and SQL Managed Instance

リソース ガバナー ワークロード グループを作成し、そのワークロード グループをリソース ガバナー リソース プールに関連付けます。Creates a Resource Governor workload group and associates the workload group with a Resource Governor resource pool. リソース ガバナーは、MicrosoftMicrosoftSQL ServerSQL Server のすべてのエディションで使用できるわけではありません。Resource Governor is not available in every edition of MicrosoftMicrosoftSQL ServerSQL Server. SQL ServerSQL Serverの各エディションでサポートされる機能の一覧については、「 SQL Server 2016 の各エディションがサポートする機能」を参照してください。For a list of features that are supported by the editions of SQL ServerSQL Server, see Features Supported by the Editions of SQL Server 2016.

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

構文Syntax

CREATE WORKLOAD GROUP group_name
[ 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" ]
    [ [ , ] EXTERNAL external_pool_name | "default" ] ]
    } ]
[ ; ]

引数Arguments

group_namegroup_name
ワークロード グループのユーザー定義の名前を指定します。Is the user-defined name for the workload group. group_name には、英数字を最大 128 文字まで使用できます。SQL ServerSQL Server のインスタンス内で一意である必要があり、識別子のルールに従っている必要があります。group_name is alphanumeric, can be up to 128 characters, must be unique within an instance of SQL ServerSQL Server, and must comply with the rules for identifiers.

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

  • 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 = valueREQUEST_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.

value は、SQL Server 2017 (14.x)SQL Server 2017 (14.x) までは整数であり、SQL Server 2019 (15.x)SQL Server 2019 (15.x) 以降と Azure SQL Managed Instance では 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) and in Azure SQL Managed Instance. 既定値は 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 = valueREQUEST_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 a memory grant (work buffer memory) to become available. value は、0 または正の整数にする必要があります。value must be 0 or a positive integer. value の既定の設定である 0 の場合、クエリ コストに基づく内部の計算を使用して、最大時間が決定されます。The default setting for value, 0, uses an internal calculation based on query cost to determine the maximum time.

注意

メモリ許可のタイムアウトに達しても、常にクエリが失敗するとは限りません。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.

MAX_DOP = valueMAX_DOP = value
並列クエリ実行に対する並列処理の最大限度 (MAXDOP) を指定します。Specifies the maximum degree of parallelism (MAXDOP) for parallel query execution. value は、0 または正の整数にする必要があります。value must be 0 or a positive integer. value の許容範囲は 0 から 64 です。The allowed range for value is from 0 through 64. value の既定の設定は 0 で、グローバル設定が使用されます。The default setting for value, 0, uses the global setting. MAX_DOP は次のように処理されます。MAX_DOP is handled as follows:

注意

ワークロード グループの MAX_DOP では、並列処理の最大限度に対するサーバー構成と、MAXDOP データベース スコープ構成がオーバーライドされます。Workload group MAX_DOP overrides the server configuration for max degree of parallelism and the MAXDOP database scoped configuration.

ヒント

これをクエリ レベルで行うには、MAXDOP クエリ ヒントを使用します。To accomplish this at the query level, use the MAXDOP query hint. ワークロード グループの MAX_DOP を超えない限り、クエリ ヒントとして並列処理の最大限度を設定することは有効です。Setting the maximum degree of parallelism as a query hint is effective as long as it does not exceed the workload group MAX_DOP. MAXDOP クエリ ヒントの値が Resource Governor を使用して構成されている値を超える場合、SQL Server データベース エンジンSQL Server Database Engine ではリソース ガバナーの MAX_DOP の値が使用されます。If the MAXDOP query hint value exceeds the value that is configured by using the Resource Governor, the SQL Server データベース エンジンSQL Server Database Engine uses the Resource Governor MAX_DOP value. MAXDOP クエリ ヒントでは常に、並列処理の最大限度のサーバー構成がオーバーライドされます。The MAXDOP query hint always overrides the server configuration for max degree of parallelism.

データベース レベルでこれを行うには、MAXDOP データベース スコープ構成を使用します。To accomplish this at the database level, use the MAXDOP database scoped configuration.

これをサーバー レベルで行うには、並列処理の最大限度 (MAXDOP) サーバー構成オプションを使用します。To accomplish this at the server level, use the max degree of parallelism (MAXDOP) server configuration option.

GROUP_MAX_REQUESTS = valueGROUP_MAX_REQUESTS = value
ワークロード グループで実行を許可する同時要求の最大数を指定します。Specifies the maximum number of simultaneous requests that are allowed to execute in the workload group. value には、0 または正の整数を指定する必要があります。value must be a 0 or a positive integer. value の既定の設定は 0 であり、これでは無制限の要求が許可されます。The default setting for value is 0, and 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. 実質的には、これによってワークロード グループがグループ リソースに配置されます。This 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" を USING で使用する場合は、引用符 ("") または角かっこ ([]) で囲む必要があります。"default" is a reserved word and when used with USING, must be enclosed by quotation marks ("") or brackets ([]).

注意

定義済みのワークロード グループおよびリソース プールではすべて、"default" などの小文字の名前が使用されています。Predefined workload groups and resource pools all use lower case 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.

EXTERNAL external_pool_name | "default"EXTERNAL external_pool_name | "default"
適用対象: SQL ServerSQL Server (SQL Server 2016 (13.x)SQL Server 2016 (13.x) 以降)。Applies to: SQL ServerSQL Server (starting with SQL Server 2016 (13.x)SQL Server 2016 (13.x)).

ワークロード グループには、外部リソース プールを指定できます。Workload group can specify an external resource pool. ワークロード グループを定義し、2 つのプールに関連付けることができます。You can define a workload group and associate with two pools:

  • SQL ServerSQL Server ワークロードおよびクエリのリソース プールA resource pool for SQL ServerSQL Server workloads and queries
  • 外部プロセス用の外部リソース プールAn external resource pool for external processes. 詳細については、「sp_execute_external_script (Transact-SQL)」を参照してください。For more information, see sp_execute_external_script (Transact-SQL).

解説Remarks

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

MAX_DOP の制限は、タスクごとに設定されます。The MAX_DOP limit is set per task. この設定は、要求ごとまたはクエリ制限ごとではありません。It is not a per request or per query limit. つまり、並列クエリ実行中に、1 つの要求で、スケジューラに割り当てられてた複数のタスクを生成することができます。This means that during a parallel query execution, a single request can spawn multiple tasks which are assigned to a scheduler. 詳細については、「スレッドおよびタスクのアーキテクチャ ガイド」を参照してください。For more information, see the Thread and Task Architecture Guide.

MAX_DOP が使用されていて、コンパイル時にクエリが直列としてマークされている場合は、ワークロード グループまたはサーバー構成の設定にかかわらず、実行時に並列に変更することはできません。When MAX_DOP is used and a query is marked as serial at compile time, it cannot be changed back to parallel at run time regardless of the workload group or server configuration setting. 構成後の MAX_DOP は、メモリの不足時にのみ低くすることができます。After MAX_DOP is configured, it can only be lowered due to memory pressure. ワークロード グループの再構成は、許可メモリ キューで待機している間は認識されません。Workload group reconfiguration is not visible while waiting in the grant memory queue.

パーティション テーブルのインデックス作成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. 必要なメモリの合計が、Resource Governor のワークロード グループの設定によって課せられているクエリごとの制限 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" ワークロード グループでは、クエリごとの制限を超えてもクエリの開始に必要な最低限のメモリを使用できるようになっているので、そのようなクエリを実行するのに十分な量のメモリが "default" リソース プールに対して構成されていれば、同じインデックス作成を "default" ワークロード グループで実行できる可能性があります。Because the "default" workload group allows a query to exceed the per-query limit with the minimum required memory, 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.

Example

Resource Governor の既定の設定を使用し、Resource Governor の既定のプールに配置される、newReports という名前のワークロード グループを作成します。Create a workload group named newReports which uses the Resource Governor default settings, and is in the Resource Governor default pool. この例では default プールを指定していますが、必須ではありません。The example specifies the default pool, but this is not required.

CREATE WORKLOAD GROUP newReports
WITH
    (REQUEST_MAX_MEMORY_GRANT_PERCENT = 2.5
      , REQUEST_MAX_CPU_TIME_SEC = 100
      , MAX_DOP = 4)    
USING "default" ;
GO

参照See Also

* Azure Synapse
Analytics *
 
* Azure Synapse
Analytics *
 

 

Azure Synapse AnalyticsAzure Synapse Analytics

ワークロード グループを作成します。Creates a workload group. ワークロード グループは、一連の要求用のコンテナーであり、システムでワークロード管理を構成する方法の基礎となります。Workload groups are containers for a set of requests and are the basis for how workload management is configured on a system. ワークロード グループでは、ワークロードの分離のためのリソースの予約、リソースの格納、要求ごとのリソースの定義、実行ルールへの準拠を行う機能が提供されます。Workload groups provide the ability to reserve resources for workload isolation, contain resources, define resources per request, and adhere to execution rules. ステートメントが完了すると、設定が有効になります。Once the statement completes, the settings are in effect.

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

CREATE WORKLOAD GROUP group_name
 WITH
 (   MIN_PERCENTAGE_RESOURCE = value 
   , CAP_PERCENTAGE_RESOURCE = value 
   , REQUEST_MIN_RESOURCE_GRANT_PERCENT = value
  [ [ , ] REQUEST_MAX_RESOURCE_GRANT_PERCENT = value ]
  [ [ , ] IMPORTANCE = { LOW | BELOW_NORMAL | NORMAL | ABOVE_NORMAL | HIGH } ]
  [ [ , ] QUERY_EXECUTION_TIMEOUT_SEC = value ] )
  [ ; ]

group_namegroup_name
ワークロード グループを識別する名前を指定します。Specifies the name by which the workload group is identified. group_name は、sysname です。group_name is a sysname. これは長さを最大で 128 文字とすることができ、インスタンス内では一意である必要があります。It can be up to 128 characters long and must be unique within the instance.

MIN_PERCENTAGE_RESOURCE = valueMIN_PERCENTAGE_RESOURCE = value
他のワークロード グループと共有されない、このワークロード グループに対して保証される最小リソース割り当てを指定します。Specifies a guaranteed minimum resource allocation for this workload group that is not shared with other workload groups. value は 0 から 100 の範囲の整数です。value is an integer range from 0 to 100. すべてのワークロード グループでの min_percentage_resource の合計は、100 を超えることはできません。The sum of min_percentage_resource across all workload groups cannot exceed 100. min_percentage_resource の値を cap_percentage_resource より大きくすることはできません。The value for min_percentage_resource cannot be greater than cap_percentage_resource. サービス レベルごとに有効な最小値があります。There are minimum effective values allowed per service level. 詳細については、「有効な値」を参照してください。See Effective Values for more details.

CAP_PERCENTAGE_RESOURCE = valueCAP_PERCENTAGE_RESOURCE = value
ワークロード グループ内のすべての要求に対するリソースの最大使用率を指定します。Specifies the maximum resource utilization for all requests in a workload group. value に対して許可される整数の範囲は 1 から 100 です。The allowed integer range for value is 1 through 100. cap_percentage_resource の値は、min_percentage_resource よりも大きくする必要があります。The value for cap_percentage_resource must be greater than min_percentage_resource. cap_percentage_resource の有効な値は、他のワークロード グループで min_percentage_resource が 0 より大きく構成されている場合に減らすことができます。The effective value for cap_percentage_resource can be reduced if min_percentage_resource is configured greater than zero in other workload groups.

REQUEST_MIN_RESOURCE_GRANT_PERCENT = valueREQUEST_MIN_RESOURCE_GRANT_PERCENT = value
要求ごとに割り当てられるリソースの最小量を設定します。Sets the minimum amount of resources allocated per request. value は 0.75 から 100.00 の 10 進数の範囲の必須パラメーターです。value is a required parameter with a decimal range between 0.75 to 100.00. request_min_resource_grant_percent の値は、0.25 の倍数である必要があります。また、min_percentage_resource の係数であり、cap_percentage_resource よりも小さくする必要があります。The value for request_min_resource_grant_percent must be a multiple of 0.25, must be a factor of min_percentage_resource, and be less than cap_percentage_resource. サービス レベルごとに有効な最小値があります。There are minimum effective values allowed per service level. 詳細については、「有効な値」を参照してください。See Effective Values for more details.

次に例を示します。For example:

CREATE WORKLOAD GROUP wgSample 
WITH
  ( MIN_PERCENTAGE_RESOURCE = 26                -- integer value
    , REQUEST_MIN_RESOURCE_GRANT_PERCENT = 3.25 -- factor of 26 (guaranteed a minimum of 8 concurrency)
    , CAP_PERCENTAGE_RESOURCE = 100 )

request_min_resource_grant_percent のガイドラインとして、リソース クラスに使用される値を検討してください。Consider the values that are used for resource classes as a guideline for request_min_resource_grant_percent. 次の表には、Gen2 のリソース割り当てが含まれています。The table below contains resource allocations for Gen2.

リソース クラスResource Class リソースの割合Percent of Resources
SmallrcSmallrc 3%3%
MediumrcMediumrc 10%10%
LargercLargerc 22%22%
XlargercXlargerc 70%70%

REQUEST_MAX_RESOURCE_GRANT_PERCENT = valueREQUEST_MAX_RESOURCE_GRANT_PERCENT = value

要求ごとに割り当てられるリソースの最大量を設定します。Sets the maximum amount of resources allocated per request. value は省略可能な 10 進数のパラメーターで、既定値は request_min_resource_grant_percent と同じ値です。value is an optional decimal parameter with a default value equal to the request_min_resource_grant_percent. value は request_min_resource_grant_percent 以上である必要があります。value must be greater than or equal to request_min_resource_grant_percent. request_max_resource_grant_percent の値が request_min_resource_grant_percent より大きく、システム リソースが使用可能な場合は、追加のリソースが要求に割り当てられます。When the value of request_max_resource_grant_percent is greater than request_min_resource_grant_percent and system resources are available, additional resources are allocated to a request.

IMPORTANCE = { LOW | BELOW_NORMAL | NORMAL | ABOVE_NORMAL | HIGH }IMPORTANCE = { LOW | BELOW_NORMAL | NORMAL | ABOVE_NORMAL | HIGH }

ワークロード グループに対する要求の既定の重要度を指定します。Specifies the default importance of a request for the workload group. 重要度は次のいずれかで、NORMAL が既定値です。Importance is one of the following, with NORMAL being the default:

  • LOWLOW
  • BELOW_NORMALBELOW_NORMAL
  • NORMAL (既定値)NORMAL (default)
  • ABOVE_NORMALABOVE_NORMAL
  • HIGHHIGH

ワークロード グループでの重要度セットは、ワークロード グループ内のすべての要求に対する既定の重要度です。Importance set at the workload group is a default importance for all requests in the workload group. ユーザーは、分類子レベルで重要度を設定することもできます。これにより、ワークロード グループの重要度の設定をオーバーライドできます。A user can also set importance at the classifier level, which can override the workload group importance setting. これにより、ワークロード グループ内の要求の重要度を区別して、予約されていないリソースにすばやくアクセスできるようになります。This allows for differentiation of importance for requests within a workload group to get access to non-reserved resources quicker. ワークロード グループ全体で min_percentage_resource の合計が 100 未満の場合は、重要度に基づいて割り当てられた予約されていないリソースがあります。When the sum of min_percentage_resource across workload groups is less than 100, there are non-reserved resources that are assigned on a basis of importance.

QUERY_EXECUTION_TIMEOUT_SEC = valueQUERY_EXECUTION_TIMEOUT_SEC = value

クエリが取り消されるまでに実行できる最大時間を秒単位で指定します。Specifies the maximum time, in seconds, that a query can execute before it is canceled. value は、0 または正の整数にする必要があります。value must be 0 or a positive integer. value の既定の設定が 0 の場合は、クエリはタイムアウトしません。クエリが実行状態になると、QUERY_EXECUTION_TIMEOUT_SEC がカウントされます。クエリがキューに入れられたときではありません。The default setting for value is 0, which the query never times out. QUERY_EXECUTION_TIMEOUT_SEC counts once the query is in running state, not when the query is queued.

解説Remarks

リソース クラスに対応するワークロード グループは、旧バージョンとの互換性のために自動的に作成されます。Workload groups corresponding to resource classes are created automatically for backward compatibility. これらのシステム定義のワークロード グループは削除できません。These system defined workload groups cannot be dropped. さらに 8 つのユーザー定義のワークロード グループを作成できます。An additional 8 user defined workload groups can be created.

ワークロード グループが 0 より大きい min_percentage_resource を使用して作成されている場合、CREATE WORKLOAD GROUP ステートメントは、ワークロード グループを作成するのに十分なリソースが確保されるまでキューに格納されます。If a workload group is created with min_percentage_resource greater than zero, the CREATE WORKLOAD GROUP statement will queue until there are enough resources to create the workload group.

有効な値Effective Values

min_percentage_resourcecap_percentage_resourcerequest_min_resource_grant_percentrequest_max_resource_grant_percent の各パラメーターは、現在のサービス レベルおよびその他のワークロード グループの構成のコンテキストで調整された有効な値が含まれます。The parameters min_percentage_resource, cap_percentage_resource, request_min_resource_grant_percent and request_max_resource_grant_percent have effective values that are adjusted in the context of the current service level and the configuration of other workload groups.

サービス レベルに応じてクエリごとに必要最低限のリソースがあるため、request_min_resource_grant_percent パラメーターには有効な値が含まれます。The request_min_resource_grant_percent parameter has an effective value because there are minimum resources needed per query depending on the service level. たとえば、最も低いサービス レベル (DW100c) では、要求ごとに最小 25% のリソースが必要です。For example, at the lowest service level, DW100c, a minimum 25% resources per request is needed. ワークロード グループが 3% の request_min_resource_grant_percentrequest_max_resource_grant_percent で構成されている場合、インスタンスが開始されると、両方のパラメーターの有効な値が 25% に調整されます。If the workload group is configured with 3% request_min_resource_grant_percent and request_max_resource_grant_percent, the effective values for both parameters adjusts to 25% when the instance is started. インスタンスが DW1000c にスケールアップされる場合、両方のパラメーターに対して構成された有効な値は 3% になります。そのサービス レベルでサポートされている最小値が 3% であるためです。If the instance is scaled up to DW1000c the configured and effective values for both parameters is 3% because 3% is the minimum supported value at that service level. インスタンスが DW1000c よりも高くスケーリングされた場合、両方のパラメーターに対して構成された有効な値は 3% のままになります。If the instance is scaled higher than DW1000c, the configured and effective values for both parameters will stay at 3%. さまざまなサービス レベルの有効な値の詳細については、以下の表を参照してください。See the below table for further details on effective values at the different service levels.

サービス レベルService Level REQUEST_MIN_RESOURCE_GRANT_PERCENT の有効な最小値Lowest effective value for REQUEST_MIN_RESOURCE_GRANT_PERCENT 同時クエリの最大数Maximum concurrent queries
DW100cDW100c 25%25% 44
DW200cDW200c 12.5%12.5% 88
DW300cDW300c 8%8% 1212
DW400cDW400c 6.25%6.25% 1616
DW500cDW500c 5%5% 2020
DW1000cDW1000c 3%3% 3232
DW1500cDW1500c 3%3% 3232
DW2000cDW2000c 2%2% 4848
DW2500cDW2500c 2%2% 4848
DW3000cDW3000c 1.5%1.5% 6464
DW5000cDW5000c 1.5%1.5% 6464
DW6000cDW6000c 0.75%0.75% 128128
DW7500cDW7500c 0.75%0.75% 128128
DW10000cDW10000c 0.75%0.75% 128128
DW15000cDW15000c 0.75%0.75% 128128
DW30000cDW30000c 0.75%0.75% 128128

min_percentage_resource パラメーターは有効な request_min_resource_grant_percent 以上である必要があります。The min_percentage_resource parameter must be greater than or equal to the effective request_min_resource_grant_percent. min_percentage_resource が有効な min_percentage_resource 未満に構成されたワークロード グループには、実行時にゼロに調整された値が含まれています。A workload group with min_percentage_resource configured less than effective min_percentage_resource has the value adjusted to zero at run time. この場合、min_percentage_resource 用に構成されたリソースは、すべてのワークロード グループとの間で共有できます。When this happens, the resources configured for min_percentage_resource are sharable across all workload groups. たとえば、DW1000c で実行されている min_percentage_resource が 10% であるワークロード グループ wgAdHoc には、有効な 10% の min_percentage_resource が含まれます (DW1000c でサポートされている最小値は 3% です)。For example, the workload group wgAdHoc with a min_percentage_resource of 10% running at DW1000c would have an effective min_percentage_resource of 10% (3% is the minimum supported value at DW1000c). DW100c の wgAdhoc には、有効な 0% の min_percentage_resource が含まれます。wgAdhoc at DW100c would have an effective min_percentage_resource of 0%. wgAdhoc 用に構成された 10% は、すべてのワークロード グループとの間で共有されます。The 10% configured for wgAdhoc would be shared across all workload groups.

cap_percentage_resource パラメーターにも有効な値があります。The cap_percentage_resource parameter also has an effective value. ワークロード グループ wgAdhoc が 100% の cap_percentage_resource で構成されていて、別のワークロード グループ wgDashboards が 25% の min_percentage_resource で作成されている場合、wgAdhoc の有効な cap_percentage_resource は 75% になります。If a workload group wgAdhoc is configured with a cap_percentage_resource of 100% and another workload group wgDashboards is created with 25% min_percentage_resource, the effective cap_percentage_resource for wgAdhoc becomes 75%.

ワークロード グループの実行時の値を理解する最も簡単な方法は、システム ビュー sys.dm_workload_management_workload_groups_stats に対してクエリを実行することです。The easiest way to understand the run-time values for your workload groups is to query the system view sys.dm_workload_management_workload_groups_stats.

アクセス許可Permissions

CONTROL DATABASE 権限が必要です。Requires CONTROL DATABASE permission

関連項目See also