CREATE WORKLOAD CLASSIFIER (Transact-SQL)

適用対象:Azure Synapse Analytics

ワークロード管理で使用する分類子オブジェクトを作成します。 分類子では、受信要求が分類子ステートメントの定義に指定されたパラメーターに基づいて、ワークロード グループに割り当てられます。 分類子は要求が送信されるごとに評価されます。 要求が分類子と一致しない場合は、既定のワークロード グループに割り当てられます。 既定のワークロード グループはリソース クラスです smallrc

Note

マネージド ID (MI) 動作の分類は、Azure Synapse ワークスペースの専用 SQL プールと、スタンドアロン専用 SQL プール (旧称 SQL DW) で異なります。 スタンドアロン専用 SQL プール MI を使用すると、割り当てられた ID が保持されますが、Azure Synapse ワークスペースでは、MI が dbo ロールに追加されます。 これは変更できません。 既定では、dbo ロールは次にsmallrc分類されます。 dbo ロールの分類子を作成すると、次以外smallrcのワークロード グループに要求を割り当てることができます。 dbo だけが分類に対して汎用的で、より広範な影響を与える場合は、dbo ロールの分類と組み合わせてラベル、セッション、または時間ベースの分類を使用することを検討してください。

Transact-SQL 構文表記規則

構文

CREATE WORKLOAD CLASSIFIER classifier_name
WITH
    ( WORKLOAD_GROUP = 'name'
    , MEMBERNAME = 'security_account'
    [ [ , ] WLM_LABEL = 'label' ]
    [ [ , ] WLM_CONTEXT = 'context' ]
    [ [ , ] START_TIME = 'HH:MM' ]
    [ [ , ] END_TIME = 'HH:MM' ]
    [ [ , ] IMPORTANCE = { LOW | BELOW_NORMAL | NORMAL | ABOVE_NORMAL | HIGH } ] )
[ ; ]

Note

この構文は、Azure Synapse Analytics のサーバーレス SQL プールでサポートされていません。

引数

classifier_name

ワークロード分類子を識別する名前を指定します。 classifier_nameは sysname です。 このパラメーターの長さは最大 128 文字で、インスタンス内で一意である必要があります。

WORKLOAD_GROUP = 'name'

分類子の規則によって条件が満たされると、name によって要求がワークロード グループにマップされます。 namesysname です。 このパラメーターの長さは最大 128 文字で、分類子の作成時には有効なワークロード グループ名である必要があります。

使用可能なワークロード グループは、sys.workload_management_workload_groups カタログ ビューで見つけることができます。

ME MB (メガバイト)ERNAME = 'security_account'

分類に使用するセキュリティ アカウント。 security_accountは sysname で、既定値はありません。 security_accountには、データベース ユーザー、データベース ロール、Microsoft Entra ログイン、または Microsoft Entra グループを指定できます。

Note

システムに user_name() 接続するときに、この関数を使用して、分類プロセスが要求の MEMBERNAME 分類に使用することを確認します。 関数を MEMBERNAME 使用 user_name() して検証すると、Microsoft Entra ID またはサービス プリンシパルの分類に関する問題のトラブルシューティングに役立ちます。 返された場合user_name()dbo、dboMEMBERNAME使用して要求を分類できます。 dbo ロールのすべてのメンバーが分類されます。 追加の分類パラメーター (WLM_LABELWLM_CONTEXT dbo ロールにマッピングされた複数の Microsoft Entra アカウントからの要求を具体的に分類する場合など) を使用することもできます。

WLM_LABEL

要求を分類できるラベル値を指定します。 Label は nvarchar(255) 型 の省略可能なパラメーターです。 要求の OPTION (LABEL) を使用して、分類子の構成を一致させます。

次に例を示します。

CREATE WORKLOAD CLASSIFIER wcELTLoads
WITH (
    WORKLOAD_GROUP = 'wgDataLoad',
    MEMBERNAME = 'ELTRole',
    WLM_LABEL = 'dimension_loads'
);
    
SELECT COUNT(*) FROM DimCustomer
OPTION (LABEL = 'dimension_loads');

WLM_CONTEXT

要求を分類できるセッション コンテキスト値を指定します。 WLM_CONTEXT は nvarchar(255) 型 の省略可能なパラメーターです。 セッション コンテキストを設定する要求を送信する前に、変数名が等しいwlm_contextsys.sp_set_session_contextを使用します。

次に例を示します。

CREATE WORKLOAD CLASSIFIER wcDataLoad
WITH (
    WORKLOAD_GROUP = 'wgDataLoad',
    MEMBERNAME = 'ELTRole',
    WLM_CONTEXT = 'dim_load'
);

--set session context
EXEC sys.sp_set_session_context @key = 'wlm_context', @value = 'dim_load';

--run multiple statements using the wlm_context setting
SELECT COUNT(*) FROM stg.daily_customer_load;
SELECT COUNT(*) FROM stg.daily_sales_load;

--turn off the wlm_context session setting
EXEC sys.sp_set_session_context @key = 'wlm_context', @value = NULL;

START_TIME と END_TIME

要求を分類できる開始時刻と終了時刻を指定します。 END_TIMEHH:mmどちらも START_TIME UTC タイム ゾーンの形式です。 START_TIMEEND_TIME 緒に指定する必要があります。

次に例を示します。

CREATE WORKLOAD CLASSIFIER wcELTLoads
WITH (
    WORKLOAD_GROUP = 'wgDataLoads',
    MEMBERNAME = 'ELTRole',
    START_TIME = '22:00',
    END_TIME = '02:00'
);

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

要求の相対的な重要度を指定します。 IMPORTANCE には、次のいずれかを選択します。

  • LOW
  • BELOW_NORMAL
  • NORMAL (既定値)
  • ABOVE_NORMAL
  • HIGH

指定しない場合 IMPORTANCE は、ワークロード グループの重要度設定が使用されます。 既定のワークロード グループの重要度は .NORMAL 重要度は要求がスケジュールされる順番に影響します。それによって、リソースおよびロックへの最初のアクセスが指定されます。

解説

ユーザー定義分類子の最大数は 100. この制限を超える追加の構成はサポートされていません。 複数のワークロードまたはユーザー間で 1 つの設定を効率的に適用するために、分類子を共通のカテゴリにグループ化することをお勧めします。

分類パラメーターの重み付け

要求は、複数の分類子と照合できます。 分類子パラメーターには重み付けがあります。 ワークロード グループと重要度の割り当てには、重み付けが高く、一致する分類子が使用されます。 重み付けは次のようになります。

分類子パラメーター 体重
USER 64
ROLE 32
WLM_LABEL 16
WLM_CONTEXT 8
START_TIME/END_TIME 4

次の分類子構成について考えてみます。

CREATE WORKLOAD CLASSIFIER classifierA
WITH (
    WORKLOAD_GROUP = 'wgDashboards',
    MEMBERNAME = 'userloginA',
    IMPORTANCE = HIGH,
    WLM_LABEL = 'salereport'
);

CREATE WORKLOAD CLASSIFIER classifierB
WITH (
    WORKLOAD_GROUP = 'wgUserQueries',
    MEMBERNAME = 'userloginA',
    IMPORTANCE = LOW,
    START_TIME = '18:00',
    END_TIME = '07:00'
);

ユーザー userloginA は両方の分類子で構成されています。 午後 6 時から午前 7 時 (UTC) の間のラベルをsalesreport持つクエリを実行するとuserloginA、要求は重要度のwgDashboards高いワークロード グループにHIGH分類されます。 要求をオフ時間レポートの重要度で分類wgUserQueriesすることが期待される場合がありますが、重み付けWLM_LABELSTART_TIME/END_TIME.LOW 重み付け classifierA80 (64 ユーザーの場合、プラス 16 for WLM_LABEL) です。 重み付け classifierB68 (64 ユーザーの場合、 4 for START_TIME/END_TIME) です。 この例では、に追加WLM_LABELclassifierBできます。

詳細については、ワークロードの重み付けを参照してください

アクセス許可

CONTROL DATABASE 権限が必要です。

次の例は、wgcELTRole という名前のワークロード分類子を作成する方法を示します。 ワークロード グループ、ユーザーELTRolestaticrc20使用し、IMPORTANCE を にABOVE_NORMAL設定します。

CREATE WORKLOAD CLASSIFIER wgcELTRole
WITH (
    WORKLOAD_GROUP = 'staticrc20',
    MEMBERNAME = 'ELTRole',
    IMPORTANCE = ABOVE_NORMAL
);