すべてのプロダクト
Search
ドキュメントセンター

AnalyticDB:WLM

最終更新日:Nov 09, 2025

AnalyticDB for MySQL は、ワークロード管理モジュールを提供します。Workload Management (WLM) コマンドを使用して、さまざまなワークロードを詳細に制御し、クラスター全体の実行ステータスを向上させるルールを構成できます。このトピックでは、WLM コマンドを使用してワークロード管理ルールを作成、変更、有効化、無効化、および削除する方法について説明します。

前提条件

お使いの AnalyticDB for MySQL クラスターのカーネルバージョンは 3.1.6.3 以降である必要があります。

説明

AnalyticDB for MySQL クラスターのマイナーバージョンを表示および更新するには、AnalyticDB for MySQL コンソールにログインし、クラスター情報 ページの 構成情報 セクションに移動します。

使用上の注意

  • WLM コマンドを使用してルールを変更できるのは、カーネルバージョンが 3.1.10.0 以降のクラスターのみです。

  • AnalyticDB for MySQL は、ワークロード管理ルールにソフトデリートポリシーを使用します。つまり、削除されたルールの名前を新しいルールに再利用することはできません。

ルールの作成

構文

wlm add_rule
name=<ruleName>
type=query      
action=<ruleAtion>    
predicate='<property><operator><value> && <property><operator><value>'
[attrs='<ruleAttrs>']
[resource_group=<ruleResource_group>]
[description='<ruleDescription>']
[compatible_group=<compatible_group_name>]
[enabled=<ruleEnabled>]
[priority=<rulePriority>]
説明

等号 (=) の前後にスペースを追加しないでください。

パラメーター

パラメーター

必須

説明

name

はい

ルール名。

説明

ルール名は、既存のルールおよび削除されたルールの中で一意である必要があります。

type

はい

ルールのタイプ。値を query に設定します。

action

はい

クエリがルールの条件を満たしたときに実行されるアクション。

アクションの詳細については、「アクション」をご参照ください。

predicate

はい

述語条件。

述語の構文:

  • 異なる一致条件は論理 AND 関係にあり、&& で接続されます。

  • 単一の一致条件のフォーマットは、$property $operator $value です。

  • サポートされているオペレーターには、>、<、>=、<=、=、!=、および in が含まれます。

説明
  • プロパティとオペレーターの詳細については、「プロパティ」および「オペレーター」をご参照ください。

  • in オペレーターの両側には、区別のためにスペースを追加する必要があります。他のオペレーターにはスペースは必要ありません。

  • このパラメーターの値は一重引用符 (') で囲む必要があります。

attrs

いいえ

action が RESUBMIT_RESOURCE_GROUPADD_PROPERTIES、または BLOCK_WITH_PROB に設定されている場合、attrs パラメーターは必須です。

attrs の指定方法については、「アクション」の構成メソッドをご参照ください。

説明

このパラメーターの値は一重引用符 (') で囲む必要があります。

resource_group

いいえ

リソースグループの名前。デフォルト値は user_default です。

説明

AnalyticDB for MySQL コンソールにログインし、クラスターの ID をクリックしてから、[リソースグループ管理] ページに移動して、クラスターのリソースグループを表示できます。

description

いいえ

説明。

説明

このパラメーターの値は一重引用符 (') で囲む必要があります。

compatible_group

いいえ

互換グループ。

デフォルトでは、ルールは優先度の降順で照合されます。ルールが照合されると、照合プロセスは停止します。同時に照合する必要があるルールに対して互換グループを設定することもできます。ルールが照合されるとき、最も優先度の高いルールが最初に照合されます。照合されたルールに互換グループがある場合、互換グループ内の残りのルールが照合可能であれば同時に照合されます。

enabled

いいえ

ルールを有効にするかどうかを指定します。有効値:

  • true (デフォルト): ルールは有効です。

  • false: ルールは有効ではありません。

priority

いいえ

ルールの優先度。デフォルト値は 0 です。

ルールが照合されるたびに、最も優先度の高いルールのみが照合されます。複数のルールが同じ優先度を持つ場合、最初に作成されたルールが最初に照合されます。

  • 例 1: testRule1 という名前のルールを作成します。このルールは、ユーザー名が test で、クエリパターンの履歴実行時間の 50 パーセンタイルが 60,000 ms を超える場合にクエリを終了します。

    wlm add_rule 
    name=testRule1
    type=query 
    action=kill 
    predicate='user=test && PATTERN_RT_P50>60000';

    次の結果が返されます。

    +---------------------------------+
    | result                          |
    +---------------------------------+
    | insert rule 'testRule1' success |
    +---------------------------------+
  • 例 2: testRule2 という名前のルールを作成します。ユーザー名が test で、ユーザー IP アドレスが 10.10.10.10、192.168.0.1、または 192.0.2.1 であるクエリに対して、このルールは query_priority=low ヒントワードを追加して、クエリの優先度を low に設定します。

    wlm add_rule 
    name=testRule2 
    type=query 
    action=ADD_PROPERTIES 
    attrs='{"add_prop":{"query_priority":"low"}}' 
    predicate='user=test && source_ip in 10.10.10.10,192.168.0.1,192.0.2.1';

    次の結果が返されます。

    +---------------------------------+
    | result                          |
    +---------------------------------+
    | insert rule 'testRule2' success |
    +---------------------------------+
  • 例 3: testResourceGroup リソースグループに対して、優先度が 5 の testRule3 という名前のルールを作成します。このルールは、ユーザー名が test であるすべての select クエリを終了します。

    wlm add_rule
    name=testRule3
    type=query
    resource_group=testResourceGroup
    description='just a test'
    priority=5
    action=kill
    predicate='user=test && query_task_type=1';

    次の結果が返されます。

    +---------------------------------+
    | result                          |
    +---------------------------------+
    | insert rule 'testRule3' success |
    +---------------------------------+

ルールの変更

重要

WLM コマンドを使用してルールを変更できるのは、カーネルバージョンが 3.1.10.0 以降のクラスターのみです。

AnalyticDB for MySQL クラスターのマイナーバージョンを表示および更新するには、AnalyticDB for MySQL コンソールにログインし、クラスター情報 ページの 構成情報 セクションに移動します。

構文

wlm update_rule
id=<ruleId>
name=<ruleName>
type=query 
action=<ruleAtion> 
predicate='<property><operator><value> && <property><operator><value>'
[attrs='<ruleAttrs>']
[resource_group=<ruleResource_group>]
[description='<ruleDescription>']
[compatible_group=<compatible_group_name>]
[enabled=<ruleEnabled>]
[priority=<rulePriority>]
説明

等号 (=) の前後にスペースを追加しないでください。

パラメーター

パラメーター

必須

説明

id

いいえ

ルールの ID。ルール ID は一意であり、対応するルールを照合するために使用され、変更することはできません。

説明

wlm list_rule 文を実行してルール ID をクエリできます。詳細については、「ルールのクエリ」をご参照ください。

name

いいえ

ルール名。ルール名を変更するときは、ルール ID を使用して対応するルールを照合する必要があります。

説明

変更されたルールは、作成されたルールと同じ名前にすることはできません。そうしないと、同じ名前で作成されたルールが上書きされます。

type

いいえ

ルールのタイプ。値を query に設定します。

action

いいえ

クエリがルールの条件を満たしたときに実行されるアクション。

アクションの詳細については、「アクション」をご参照ください。

predicate

いいえ

述語条件。

述語の構文:

  • 異なる一致条件は論理 AND 関係にあり、&& で接続されます。

  • 単一の一致条件のフォーマットは、$property $operator $value です。

  • サポートされているオペレーターには、>、<、>=、<=、=、!=、および in が含まれます。

説明
  • プロパティとオペレーターの詳細については、「プロパティ」および「オペレーター」をご参照ください。

  • in オペレーターの両側には、区別のためにスペースを追加する必要があります。他のオペレーターにはスペースは必要ありません。

  • このパラメーターの値は一重引用符 (') で囲む必要があります。

attrs

いいえ

action が RESUBMIT_RESOURCE_GROUPADD_PROPERTIES、または BLOCK_WITH_PROB に設定されている場合、attrs パラメーターは必須です。

attrs の指定方法については、「アクション」の構成メソッドをご参照ください。

このパラメーターの値は一重引用符 (') で囲む必要があります。

resource_group

いいえ

リソースグループの名前。デフォルト値は user_default です。

説明

AnalyticDB for MySQL コンソールにログインし、クラスターの ID をクリックしてから、[リソースグループ管理] ページに移動して、クラスターのリソースグループを表示できます。

description

いいえ

説明。

説明

このパラメーターの値は一重引用符 (') で囲む必要があります。

compatible_group

いいえ

互換グループ。

デフォルトでは、ルールは優先度の降順で照合されます。ルールが照合されると、照合プロセスは停止します。同時に照合する必要があるルールに対して互換グループを設定することもできます。ルールが照合されるとき、最も優先度の高いルールが最初に照合されます。照合されたルールに互換グループがある場合、互換グループ内の残りのルールが照合可能であれば同時に照合されます。

enabled

いいえ

ルールを有効にするかどうかを指定します。有効値:

  • true (デフォルト): ルールは有効です。

  • false: ルールは有効ではありません。

priority

いいえ

ルールの優先度。デフォルト値は 0 です。

ルールが照合されるたびに、最も優先度の高いルールのみが照合されます。複数のルールが同じ優先度を持つ場合、最初に作成されたルールが最初に照合されます。

  • 例 1: ID 2 のルールの名前を Rule に変更します。

    wlm update_rule 
    id=2
    name=Rule;

    次の結果が返されます。

    +-----------------+
    | result          |
    +-----------------+
    | update rule 2   |
    +-----------------+
  • 例 2: testRule1 ルールの条件を変更します。このルールは、ユーザー名が test で、クエリパターンの履歴実行時間の 50 パーセンタイルが 80,000 ms を超える場合にクエリを終了するようになります。

    wlm update_rule
    name=testRule1
    predicate='user=test && PATTERN_RT_P50>80000';

    または、testRule1 ルールの ID を使用してルールを変更することもできます。

    wlm update_rule 
    id=1
    predicate='user=test && PATTERN_RT_P50>80000';

    次の結果が返されます。

    +-----------------+
    | result          |
    +-----------------+
    | update rule 1   |
    +-----------------+
  • 例 3: testRule1 ルールの条件を満たすクエリを testgroup リソースグループに配信して実行します。

    変更前は、testRule1 ルールは条件を満たすクエリを終了します。

    wlm add_rule 
    name=testRule1
    type=query 
    action=kill 
    predicate='user=test && PATTERN_RT_P50>60000';

    testRule1 ルールを変更して、現在のリソースグループからすべてのクエリを testgroup リソースグループに配信して実行します。

    wlm update_rule
    name=testRule1
    action=RESUBMIT_RESOURCE_GROUP
    attrs='{
        "resubmit":{
        "resource_group": "testgroup"
        }
    }'
    説明

    attrs の指定方法については、「アクション」の構成メソッドをご参照ください。

    次の結果が返されます。

    +-----------------+
    | result          |
    +-----------------+
    | update rule 1   |
    +-----------------+

ルールのクエリ

構文

wlm list_rule
[id=<ruleID>]
[name='<ruleName>'\G]

パラメーター

パラメーター

必須

説明

id

いいえ

ルールの ID。

説明

ID と名前を指定しない場合、ルール ID を含め、削除されていないすべてのルールがクエリされます。

name

いいえ

ルール名。

説明
  • このパラメーターの値は一重引用符 (') で囲む必要があります。

  • ID と名前を指定しない場合、ルール名を含め、削除されていないすべてのルールがクエリされます。

\G

いいえ

クエリ結果を列ごとに出力します。各フィールドは別の行に出力されます。

  • 例 1: ID が testID1 のルールをクエリします。

    wlm list_rule 
    id=1 \G;

    次の結果が返されます。

                id: 1
                name: testRule4
         description: NULL
                type: QUERY
      resource_group: user_default
             enabled: 1
            priority: 0
             version: 1
          life_cycle: BEFORE_QUEUEING
    compatible_group:
         valid_begin: null
           valid_end: null
             creator: kepler
         update_user: kepler
         create_time: 2022-09-16 14:00:18
         update_time: 2022-09-16 14:00:18
           predicate: [{"property":"${session.user}","value":"test","operator":"equal"},{"property":"${session.source_ip}","value":"1,2,3","operator":"in"}]
              action: ADD_PROPERTIES
               attrs: {"add_prop":{"query_priority":"low"}}
    1 row in set (0.11 sec)

  • 例 2: ID が testID1 で名前が testRule4 のルールをクエリします。

    mysql> wlm list_rule 
    id=1 
    name='testRule4' \G;

    次の結果が返されます。

                id: 1
                name: testRule4
         description: NULL
                type: QUERY
      resource_group: user_default
             enabled: 1
            priority: 0
             version: 1
          life_cycle: BEFORE_QUEUEING
    compatible_group:
         valid_begin: null
           valid_end: null
             creator: kepler
         update_user: kepler
         create_time: 2022-09-16 14:00:18
         update_time: 2022-09-16 14:00:18
           predicate: [{"property":"${session.user}","value":"test","operator":"equal"},{"property":"${session.source_ip}","value":"1,2,3","operator":"in"}]
              action: ADD_PROPERTIES
               attrs: {"add_prop":{"query_priority":"low"}}
    1 row in set (0.09 sec)

ルールの無効化

構文

wlm disable_rule id=<ruleID>

パラメーター

パラメーター

必須

説明

id

はい

ルールの ID。

説明

wlm list_rule コマンドを実行してルール ID をクエリできます。詳細については、「ルールのクエリ」をご参照ください。

  • 例 1: ID が testID1 のルールを無効にします。

    wlm disable_rule id=1;

    次の結果が返されます。

    +------------------+
    | result           |
    +------------------+
    | disable rule 1   |
    +------------------+
  • 例 2: ID が testID1 のルールをクエリします。

    wlm list_rule id=1\G;

    次の結果が返されます。

                id: 1
                name: testRule4
         description: NULL
                type: QUERY
      resource_group: user_default
             enabled: 0
            priority: 0
             version: 1
          life_cycle: BEFORE_QUEUEING
    compatible_group:
         valid_begin: null
           valid_end: null
             creator: kepler
         update_user: kepler
         create_time: 2022-09-16 14:00:18
         update_time: 2022-09-16 14:00:18
           predicate: [{"property":"${session.user}","value":"test","operator":"equal"},{"property":"${session.source_ip}","value":"1,2,3","operator":"in"}]
              action: ADD_PROPERTIES
               attrs: {"add_prop":{"query_priority":"low"}}

ルールの有効化

構文

wlm enable_rule id=<ruleID>

パラメーター

パラメーター

必須

説明

id

はい

ルールの ID。

説明

wlm list_rule コマンドを実行してルール ID をクエリできます。詳細については、「ルールのクエリ」をご参照ください。

  • 例 1: ID が testID1 のルールを有効にします。

    wlm enable_rule id=1;

    次の結果が返されます。

    +----------------+
    | result         |
    +----------------+
    | enable rule 1  |
    +----------------+
  • 例 2: ID が testID1 のルールをクエリします。

    wlm list_rule id=1\G;

    次の結果が返されます。

                id: 1
                name: testRule4
         description: NULL
                type: QUERY
      resource_group: user_default
             enabled: 1
            priority: 0
             version: 1
          life_cycle: BEFORE_QUEUEING
    compatible_group:
         valid_begin: null
           valid_end: null
             creator: kepler
         update_user: kepler
         create_time: 2022-09-16 14:00:18
         update_time: 2022-09-16 14:00:18
           predicate: [{"property":"${session.user}","value":"test","operator":"equal"},{"property":"${session.source_ip}","value":"1,2,3","operator":"in"}]
              action: ADD_PROPERTIES
               attrs: {"add_prop":{"query_priority":"low"}}

ルールの削除

構文

wlm delete_rule id=<ruleID>

パラメーター

パラメーター

必須

説明

id

はい

ルールの ID。

説明

wlm list_rule コマンドを実行してルール ID をクエリできます。詳細については、「ルールのクエリ」をご参照ください。

  • 例 1: ID が testID1 のルールを削除します。

    wlm delete_rule id=1;

    次の結果が返されます。

    +----------------+
    | result         |
    +----------------+
    | delete rule 1  |
    +----------------+
  • 例 2: ID が testID1 のルールをクエリします。

    wlm list_rule id=1\G;

    次の結果が返されます。

    Empty set

pattern_hash の計算

構文

wlm calc_pattern_hash <SQL>

パラメーター

パラメーター

必須

説明

SQL

はい

SELECT 文、または SELECT を含む書き込み文。

クエリ文の pattern_hash を計算します。

wlm calc_pattern_hash select * from t where a=1 and b=2;

次の結果が返されます。

+-----------------------------------+----------------------+
| raw_sql                           | pattern_hash         |
+-----------------------------------+----------------------+
| select * from t where a=1 and b=2 | -4759960226441980963 |
+-----------------------------------+----------------------+

WLM ヘルプ情報の出力

wlm コマンドをパラメーターなしで実行すると、ヘルプ情報が表示されます。

wlm;

次の結果が返されます。

+---------------------------+-------------------------------------+
| command                   | description                         |
+---------------------------+-------------------------------------+
| calc_pattern_hash         | calculate pattern_hash of query     |
| add_rule                  | add a new rule                      |
| list_rule id=[x]|name=[x] | list all rules OR filter by id/name |
| disable_rule id=[x]       | disable a rule by id                |
| enable_rule id=[x]        | enable a rule by id                 |
| delete_rule id=[x]        | delete a rule by id                 |
| update_rule id=[x]        | update a rule by id                 |
+---------------------------+-------------------------------------+

付録

付録 1: プロパティ

カテゴリ

フィールド

データの型

説明

クエリプロパティ

user

文字列

クエリを送信するユーザー。

source_ip

文字列

クエリの送信元 IP アドレス。

query_task_type

数値

クエリのタイプ。有効値:

  • 1: SELECT

  • 2: DELETE

  • 3: UPDATE

  • 4: INSERT INTO SELECT、INSERT OVERWRITE SELECT、または REPLACE INTO SELECT

  • 5: CREATE VIEW

query_table_list

文字列リスト

クエリによってスキャンされるテーブル。

query_db_list

文字列リスト

クエリによってスキャンされるデータベース。

pattern_hash

数値

クエリパターンのハッシュ値。同じパターンのクエリを識別するために使用されます。

sql

文字列

クエリの元の SQL 文。

重要

このプロパティは、カーネルバージョンが 3.1.8.3 以降のクラスターでのみサポートされます。

クエリランタイムメトリック

説明

クエリランタイムメトリックは、クエリがキューに入った後にクエリを制御するために使用されます。

QUERY_PROCESS_TIME

数値

クエリプロセス内のすべてのタスクによって消費される合計時間。このメトリックは、クエリのコンピューティングワークロードを大まかに測定するために使用できます。単位: ms。

QUERY_EXECUTION_TIME

数値

クエリの実行時間。キュー時間と実行計画の生成に消費された時間は除きます。単位: ms。

重要

sleep() 関数は実行計画が生成されるときに実行されます。したがって、クエリの実行時間には sleep() 関数の実行時間は含まれません。

QUERY_SUBMITTED_TIME

数値

クエリが作成されたときのタイムスタンプ。

QUERY_TOTAL_TASK

数値

クエリの物理実行計画におけるタスクの総数。

QUERY_INPUT_DATA_SIZE

数値

クエリによって読み取られたデータ量。単位: MB。

QUERY_SHUFFLE_DATA_SIZE

数値

クエリのシャッフルされたデータ量。単位: MB。

QUERY_OUTPUT_DATA_SIZE

数値

クエリの出力データ量。単位: MB。

QUERY_PEAK_MEMORY

数値

クエリのピークメモリ。単位: MB。

QUERY_TOTAL_STAGES

数値

クエリの実行計画におけるステージの総数。

クエリパターンプロパティ

説明

クエリパターンプロパティは、クエリの履歴実行を反映します。

PATTERN_RT_P50

数値

同じパターンのクエリの履歴実行時間の 50 パーセンタイル。単位: ms。

PATTERN_RT_P90

数値

同じパターンのクエリの履歴実行時間の 90 パーセンタイル。単位: ms。

PATTERN_EXECUTION_TIME_P50

数値

同じパターンのクエリの履歴実行時間 (キュー時間を除く) の 50 パーセンタイル。単位: ms。

PATTERN_EXECUTION_TIME_P90

数値

同じパターンのクエリの履歴実行時間 (キュー時間を除く) の 90 パーセンタイル。単位: ms。

PATTERN_WALL_TIME_P50

数値

同じパターンのクエリの履歴ウォールタイムの 50 パーセンタイル。単位: ms。

PATTERN_WALL_TIME_P90

数値

同じパターンのクエリの履歴ウォールタイムの 90 パーセンタイル。単位: ms。

PATTERN_SHUFFLE_SIZE_AVG

数値

同じパターンのクエリの履歴シャッフルデータ量の平均。単位: byte。

PATTERN_PEAK_MEMORY_AVG

数値

同じパターンのクエリの履歴ピークメモリの平均。単位: byte。

PATTERN_INPUT_POSITION_AVG

数値

同じパターンのクエリの履歴入力レコード数の平均。単位: row。

PATTERN_OUTPUT_POSITION_AVG

数値

同じパターンのクエリの履歴出力レコード数の平均。単位: row。

付録 2: オペレーター

オペレーター

適用可能なデータの型

説明

>

数値

なし

<

数値

なし

=

数値、文字列

なし

>=

数値

なし

<=

数値

なし

!=

数値、文字列

なし

in

文字列リスト

文字列リストに共通部分があるかどうかを確認します。

contains

文字列

文字列に特定の文字列が含まれているかどうかを確認します。これは主に元の SQL 文をクエリするために使用されます。

重要

このオペレーターは、カーネルバージョンが 3.1.8.3 以降のクラスターでのみサポートされます。

付録 3: アクション

制御措置

説明

attrs 構成メソッド

KILL

クエリを終了します。

なし

RESUBMIT_RESOURCE_GROUP

現在のリソースグループで条件を満たすクエリを停止し、別のリソースグループに送信して実行します。

{ "resubmit": {"resource_group":"<resource_group_name>"}}

resource_group_name: リソースグループの名前。

説明

AnalyticDB for MySQL コンソールにログインし、クラスターの ID をクリックしてから、[リソースグループ管理] ページに移動して、クラスターのリソースグループを表示できます。

ADD_PROPERTIES

クエリのプロパティを変更します。これは通常、クエリの優先度を変更するために使用されます。ヒントワードによって構成された他のクエリプロパティを変更することもできます。

{ "add_prop": {"query_priority": "<Priority level>", "force":"false"}}

  • Priority level: クエリの優先度。値は整数または文字列です。次の項目で値を説明します。

    • 値が整数の場合、有効値は 0 から 39 です。値が大きいほど優先度が高くなります。

    • 値が文字列の場合、次の項目で値を説明します。

      • LOWEST: 最も低い優先度。対応する整数値は 5 です。

      • LOW: 低い優先度。対応する整数値は 15 です。

      • NORMAL: 通常の優先度。対応する整数値は 25 です。

      • HIGH: 最も高い優先度。対応する整数値は 35 です。

    詳細については、「優先度キューと同時実行制御」をご参照ください。

  • force: 設定されたクエリプロパティを強制的に上書きするかどうかを指定します。

    • true (デフォルト): 上書きします。

    • false: 上書きしません。

    説明

    force プロパティは、カーネルバージョンが 3.1.9.4 より前のクラスターではサポートされていません。デフォルトでは、既存のクエリプロパティは上書きされません。クラスターのカーネルバージョンを表示する方法については、「インスタンスのバージョン情報を表示する」をご参照ください。

BLOCK_WITH_PROB

クエリがキューに入る前に、特定の確率でクエリを終了します。これは通常、スロットリングに使用されます。

{ "block_prob": {"prob":<prob_value>}}

prob_value: クエリを終了する確率。値の範囲は 0 から 1 です。