次の方法で共有


リソース クラスをワークロード グループに変換する

ワークロード グループは、システム リソースを分離して含めるメカニズムを提供します。 さらに、ワークロード グループでは、それらの中で実行されている要求の実行規則を設定できます。 クエリ タイムアウト実行ルールを使用すると、ユーザーの介入なしにランナウェイ クエリを取り消すことができます。 この記事では、既存のリソース クラスを取得し、同様の構成でワークロード グループを作成する方法について説明します。 さらに、オプションのクエリ タイムアウト ルールが追加されます。

ワークロード グループとリソース クラスを同時に使用する方法については、ワークロード分類の概念ドキュメントの「リソース クラスの割り当てと分類子の混在」セクションを参照してください。

既存のリソース クラスの構成について

ワークロード グループには、要求ごとに割り当てられたシステム リソース全体の割合を指定する REQUEST_MIN_RESOURCE_GRANT_PERCENT というパラメーターが必要です。 リソースの割り当ては、コンカレンシー スロットを割り当てることで リソース クラス に対して行われます。 REQUEST_MIN_RESOURCE_GRANT_PERCENTに指定する値を決定するには、sys.dm_workload_management_workload_groups_stats DMV を使用します。 たとえば、次のクエリは、staticrc40 のようなワークロード グループを作成するために REQUEST_MIN_RESOURCE_GRANT_PERCENT パラメーターに使用できる値を返します。

SELECT Request_min_resource_grant_percent = Effective_request_min_resource_grant_percent
  FROM sys.dm_workload_management_workload_groups_stats
  WHERE name = 'staticrc40'

ワークロード グループは、システム リソース全体の割合に基づいて動作します。

ワークロード グループはシステム リソース全体の割合に基づいて動作するため、スケールアップおよびスケールダウンすると、システム リソース全体に対する静的リソース クラスに割り当てられたリソースの割合が変化します。 たとえば、DW1000c の staticrc40 は、システム リソース全体の 19.2% を割り当てます。 DW2000c では、9.6% が割り当てられます。 このモデルは、コンカレンシーのためにスケールアップする場合と、要求ごとに割り当てるリソースを増やす場合の比較に似ています。

ワークロード グループの作成

既知の REQUEST_MIN_RESOURCE_GRANT_PERCENTでは、 CREATE WORKLOAD GROUP 構文を使用してワークロード グループを作成できます。 必要に応じて、0 より大きい MIN_PERCENTAGE_RESOURCE を指定して、ワークロード グループのリソースを分離できます。 また、必要に応じて、 CAP_PERCENTAGE_RESOURCE 100 未満を指定して、ワークロード グループが使用できるリソースの量を制限することもできます。

例の基礎として mediumrc を使用すると、次のコードは、システム リソースの 10% をMIN_PERCENTAGE_RESOURCE専用にwgDataLoadsを設定し、1 つのクエリが常に実行できることを保証します。 さらに、 CAP_PERCENTAGE_RESOURCE は 40% に設定され、このワークロード グループは 4 つの同時要求に制限されます。 QUERY_EXECUTION_TIMEOUT_SEC パラメーターを 3600 に設定すると、1 時間以上実行されるすべてのクエリが自動的に取り消されます。

CREATE WORKLOAD GROUP wgDataLoads WITH  
( REQUEST_MIN_RESOURCE_GRANT_PERCENT = 10
 ,MIN_PERCENTAGE_RESOURCE = 10
 ,CAP_PERCENTAGE_RESOURCE = 40
 ,QUERY_EXECUTION_TIMEOUT_SEC = 3600)

分類子を作成する

以前は、リソース クラスへのクエリのマッピングは 、sp_addrolememberを使用して行われました。 同じ機能を実現し、要求をワークロード グループにマップするには、 CREATE WORKLOAD CLASSIFIER 構文を使用します。 sp_addrolememberを使用すると、ログインに基づいてリソースを要求にマップすることしかできません。 分類子にはログイン以外に、ラベル、セッション、時間といった追加オプションがあります。次の例では、AdfLogin ログインから OPTION LABELfactloadsに設定したクエリを、上記で作成したワークロードグループ wgDataLoads に割り当てます。

CREATE WORKLOAD CLASSIFIER wcDataLoads WITH  
( WORKLOAD_GROUP = 'wgDataLoads'
 ,MEMBERNAME = 'AdfLogin'
 ,WLM_LABEL = 'factloads')

サンプル クエリでのテスト

ワークロード グループと分類子が正しく構成されていることを確認するためのサンプル クエリと DMV クエリを次に示します。

SELECT SUSER_SNAME() --should be 'AdfLogin'

--change to a valid table AdfLogin has access to
SELECT TOP 10 *
  FROM nation
  OPTION (label='factloads')

SELECT request_id, [label], classifier_name, group_name, command
  FROM sys.dm_pdw_exec_requests
  WHERE [label] = 'factloads'
  ORDER BY submit_time DESC

次のステップ