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 ロール分類と組み合わせて使用することを検討してください。
構文
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 によって要求がワークロード グループにマップされます。 name は sysname です。 このパラメーターの長さは最大 128 文字で、分類子の作成時には有効なワークロード グループ名である必要があります。
使用可能なワークロード グループは、sys.workload_management_workload_groups カタログ ビューで見つけることができます。
MEMBERNAME = 'security_account'
分類に使用するセキュリティ アカウント。 security_account は sysname で、既定値はありません。 security_account には、データベース ユーザー、データベース ロール、Microsoft Entra ログイン、または Microsoft Entra グループを指定できます。
Note
user_name()
関数を使用して、システムに接続するときに、分類プロセスが要求の分類に使用するMEMBERNAME
を確認します。 user_name()
関数を使用してMEMBERNAME
を確認すると、Microsoft Entra ID またはサービス プリンシパルの分類に関する問題のトラブルシューティングに役立ちます。 user_name()
がdbo
を返す場合は、dboをMEMBERNAME
として使用して要求を分類できます。 dbo ロールのすべてのメンバーが分類されます。 WLM_LABEL
やWLM_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_TIME
とEND_TIME
はどちらも UTC タイム ゾーンのHH:mm
形式です。 START_TIME
と END_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
(ユーザーの場合は64
、WLM_LABEL
の場合は16
)。 classifierB
の重みは68
されます (ユーザーの場合は64
、START_TIME
/END_TIME
の場合は4
)。 この場合は、 WLM_LABEL
を classifierB
に追加できます。
詳細については、「重み付けの を読み込む」を参照してください。
アクセス許可
CONTROL DATABASE
権限が必要です。
例
次の例は、wgcELTRole
という名前のワークロード分類子を作成する方法を示します。 staticrc20
ワークロード グループ、ユーザー ELTRole
を使用し、IMPORTANCE をABOVE_NORMAL
に設定します。
CREATE WORKLOAD CLASSIFIER wgcELTRole
WITH (
WORKLOAD_GROUP = 'staticrc20',
MEMBERNAME = 'ELTRole',
IMPORTANCE = ABOVE_NORMAL
);