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_namesysname です。 このパラメーターの長さは最大 128 文字で、インスタンス内で一意である必要があります。

WORKLOAD_GROUP = 'name'

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

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

MEMBERNAME = 'security_account'

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

Note

user_name()関数を使用して、システムに接続するときに、分類プロセスが要求の分類に使用するMEMBERNAMEを確認します。 user_name()関数を使用してMEMBERNAMEを確認すると、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_context と等しいsys.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

要求を分類できる開始時刻と終了時刻を指定します。 START_TIMEEND_TIMEはどちらも UTC タイム ゾーンのHH:mm形式です。 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 は両方の分類子で構成されています。 userloginA、午後 6 時から午前 7 時 (UTC) の間のsalesreportに等しいラベルを持つクエリを実行すると、要求はHIGH重要度のwgDashboardsワークロード グループに分類されます。 要求を wgUserQueries に分類し、 LOW 時間外のレポートに対して重要度を設定することが期待されますが、 WLM_LABEL の重みは START_TIME/END_TIMEよりも高くなります。 classifierAの重み付けは80 (ユーザーの場合は64WLM_LABELの場合は16)。 classifierBの重みは68されます (ユーザーの場合は64START_TIME/END_TIMEの場合は4)。 この場合は、 WLM_LABELclassifierBに追加できます。

詳細については、「重み付けの を読み込む」を参照してください。

アクセス許可

CONTROL DATABASE 権限が必要です。

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

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