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

AnalyticDB for MySQL:WLM

最終更新日:Jun 21, 2024

AnalyticDB for MySQLは、ワークロード管理ルールの設定、クラスター管理のきめ細かい実装、およびクラスターパフォーマンスの向上に使用できるワークロード管理メカニズムを提供します。 このトピックでは、WLM構文を使用してワークロード管理ルールを作成、変更、有効化、無効化、および削除する方法について説明します。

前提条件

使用上の注意

  • WLM構文を使用して、V3.1.10.0以降のAnalyticDB for MySQLクラスターのワークロード管理ルールのみを変更できます。

  • AnalyticDB for MySQLは、ワークロード管理ルールにソフト削除ポリシーを採用しています。 新しいルールは、削除されたルールと同じ名前を使用できません。

ワークロード管理ルールの作成

構文

wlm add_rule
name=<ruleName>
type=クエリ
action=<ruleAtion>
述語='<プロパティ> <演算子> <値>&<プロパティ> <演算子> <値>'
[attrs='<ruleAttrs>']
[resource_group=<ruleResource_group>]
[description='<ruleDescription>']
[compatible_group=<compatible_group_name>]
[enabled=<ruleEnabled>]
[priority=<rulePriority>] 
説明

等号 (=) の両側にスペースは使用できません。

パラメーター

パラメーター

必須

説明

name

ルールの名前を設定します。

説明

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

type

ルールのタイプ。 パラメーターをqueryに設定します。

action

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

アクションの詳細については、このトピックの「付録3: アクション」を参照してください。

述語

ルールの述語条件。

構文:

  • 述語内の条件には論理AND関係があります。

  • 条件の要素を $Property $Operator $Valueの形式で指定します。

  • >, <, >=, <=, =, ! などの演算子 =、およびinがサポートされています。

説明
  • 詳細については、このトピックの「付録1: プロパティ」および「付録2: 演算子」のセクションを参照してください。

  • スペースはin演算子の両側に追加する必要があり、他の演算子には追加できません。

  • このパラメーターの値を一重引用符 (') で囲みます。

attrs

任意

ルールの属性。 actionパラメーターの値がRESUBMIT_RESOURCE_GROUPADD_PROPERTIES、またはBLOCK_WITH_PROBの場合、このパラメーターを指定する必要があります。

attrsパラメーターの指定方法については、このトピックの「付録3: 操作」を参照してください。

説明

このパラメーターの値を一重引用符 (') で囲みます。

resource_group

任意

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

説明

クラスターのリソースグループ名を取得するには、AnalyticDB for MySQLコンソールにログインし、クラスターIDをクリックして、[リソースグループ] ページに移動します。

説明

任意

ルールの説明。

説明

このパラメーターの値を一重引用符 (') で囲みます。

compatible_group

任意

互換性グループ。

システムは、クエリを、ルールの優先度の高い順に1つずつワークロード管理ルールと照合します。 ルールが一致すると、システムは一致を停止し、ルールで指定されたアクションを実行します。 複数のルールを一致させたい場合は、ルールを互換性グループに追加できます。 ルールが一致すると、システムは同じ互換性グループ内の他のルールもチェックし、優先順位に関係なく、他の一致するルールで指定されたアクションを実行します。

enabled

任意

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

  • true (デフォルト)

  • false

priority

任意

ルールの優先度。 デフォルト値:0

システムは、クエリを、ルールの優先度の高い順に1つずつワークロード管理ルールと照合します。 ルールが一致すると、システムは一致を停止し、ルールで指定されたアクションを実行します。 同じ優先度を持つ複数のルールが一致する場合、最も早く作成されたルールが有効になります。

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

    wlm add_rule
    name=testRule1
    type=クエリ
    action=kill
    述語='user=test && PATTERN_RT_P50>60000 '; 

    サンプル結果:

    + --------------------------------- +
    | 結果 |
    + --------------------------------- +
    | insertルール 'testRule1' の成功 |
    + --------------------------------- + 
  • 例2: testRule2という名前のルールを作成します。 ユーザー名がtestで、ユーザーIPアドレスが10.10.10.10、192.168.0.1、または192.0.2.1の場合、query_priority=lowヒントがクエリに追加されます。

    wlm add_rule
    name=testRule2
    type=クエリ
    action=ADD_PROPERTIES
    attrs='{"add_prop":{"query_priority":"low"}}'
    述語='user=test && source_ip in 10.10.10.10,192.168.0.1,192.0.2.1 '; 

    サンプル結果:

    + --------------------------------- +
    | 結果 |
    + --------------------------------- +
    | insertルール 'testRule2' の成功 |
    + --------------------------------- + 
  • 例3: testResourceGroupリソースグループの優先度が5であるtestRule3という名前のルールを作成します。 ユーザー名がtestで、クエリの種類がSELECTの場合、クエリは終了します。

    wlm add_rule
    name=testRule3
    type=クエリ
    resource_group=testResourceGroup
    description='just a test'
    priority=5
    action=kill
    述語='user=test && query_task_type=1 '; 

    サンプル結果:

    + --------------------------------- +
    | 結果 |
    + --------------------------------- +
    | insertルール 'testRule3' の成功 |
    + --------------------------------- + 

ワークロード管理ルールの変更

重要

WLM構文を使用して、V3.1.10.0以降のAnalyticDB for MySQLクラスターのワークロード管理ルールのみを変更できます。

クラスターのマイナーバージョンをクエリする方法については、AnalyticDB for MySQLクラスターのバージョンを照会するにはどうすればよいですか? クラスターのマイナーバージョンを更新するには、テクニカルサポートにお問い合わせください。

構文

wlm update_rule
id=<ruleId>
name=<ruleName>
type=クエリ
action=<ruleAtion>
述語='<プロパティ> <演算子> <値>&<プロパティ> <演算子> <値>'
[attrs='<ruleAttrs>']
[resource_group=<ruleResource_group>]
[description='<ruleDescription>']
[compatible_group=<compatible_group_name>]
[enabled=<ruleEnabled>]
[priority=<rulePriority>] 
説明

等号 (=) の両側にスペースは使用できません。

Parameters

パラメーター

必須

説明

id

任意

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

説明

WLM list_ruleステートメントを実行して、ルールIDをクエリできます。 詳細については、このトピックの「ワークロード管理ルールに関する情報の照会」をご参照ください。

name

任意

ルールの名前を設定します。 ルール名を変更するときは、対応するルールと一致するようにルールIDを使用する必要があります。

説明

新しいルール名は、既存のルールの名前と同じにすることはできません。 それ以外の場合、既存のルールは上書きされます。

type

任意

ルールのタイプ。 パラメーターをqueryに設定します。

action

任意

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

アクションの詳細については、このトピックの「付録3: アクション」を参照してください。

述語

任意

ルールの述語条件。

構文:

  • 述語内の条件には論理AND関係があります。

  • 条件の要素を $Property $Operator $Valueの形式で指定します。

  • >, <, >=, <=, =, ! などの演算子 =、およびinがサポートされています。

説明
  • 詳細については、このトピックの「付録1: プロパティ」および「付録2: 演算子」のセクションを参照してください。

  • スペースはin演算子の両側に追加する必要があり、他の演算子には追加できません。

  • このパラメーターの値を一重引用符 (') で囲みます。

attrs

任意

ルールの属性。 actionパラメーターの値がRESUBMIT_RESOURCE_GROUPADD_PROPERTIES、またはBLOCK_WITH_PROBの場合、このパラメーターを指定する必要があります。

attrsパラメーターの指定方法については、このトピックの「付録3: 操作」を参照してください。

このパラメーターの値を一重引用符 (') で囲みます。

resource_group

任意

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

説明

クラスターのリソースグループ名を取得するには、AnalyticDB for MySQLコンソールにログインし、クラスターIDをクリックして、[リソースグループ] ページに移動します。

説明

任意

ルールの説明。

説明

このパラメーターの値を一重引用符 (') で囲みます。

compatible_group

任意

互換性グループ。

システムは、クエリを、ルールの優先度の高い順に1つずつワークロード管理ルールと照合します。 ルールが一致すると、システムは一致を停止し、ルールで指定されたアクションを実行します。 複数のルールを一致させたい場合は、ルールを互換性グループに追加できます。 ルールが一致すると、システムは同じ互換性グループ内の他のルールもチェックし、優先順位に関係なく、他の一致するルールで指定されたアクションを実行します。

enabled

任意

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

  • true (デフォルト)

  • false

priority

任意

ルールの優先度。 デフォルト値:0

システムは、クエリを、ルールの優先度の高い順に1つずつワークロード管理ルールと照合します。 ルールが一致すると、システムは一致を停止し、ルールで指定されたアクションを実行します。 同じ優先度を持つ複数のルールが一致する場合、最も早く作成されたルールが有効になります。

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

    wlm update_rule
    id=2
    name=ルール; 

    サンプル結果:

    + ----------------- +
    | 結果 |
    + ----------------- +
    | 更新ルール2 |
    + ----------------- + 
  • 例2: testRule1ルールの条件を変更します。 ユーザー名がtestで、SQLパターンの履歴実行期間の50パーセンタイルが80,000 msより長い場合、クエリは終了します。

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

    または、対応するルールIDを使用してtestRule1ルールを変更します。

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

    サンプル結果:

    + ----------------- +
    | 結果 |
    + ----------------- +
    | 更新ルール1 |
    + ----------------- + 
  • 例3: testRule1ルールの要件を満たすすべてのクエリをtestgroupリソースグループに再送信して実行します。

    アクションがKILLに設定されているtestRule1という名前のルールを作成します。

    wlm add_rule
    name=testRule1
    type=クエリ
    action=kill
    述語='user=test && PATTERN_RT_P50>60000 '; 

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

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

    attrsパラメーターの指定方法については、このトピックの「付録3: 操作」を参照してください。

    サンプル結果:

    + ----------------- +
    | 結果 |
    + ----------------- +
    | 更新ルール1 |
    + ----------------- + 

ワークロード管理ルールに関する情報の照会

構文

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

パラメーター

パラメーター

必須

説明

id

任意

ルールの ID です。

説明

idパラメーターとnameパラメーターを指定しない場合、既存のすべてのルールに関する情報 (ルールidを含む) が返されます。

name

任意

ルールの名前を設定します。

説明
  • このパラメーターの値を一重引用符 (') で囲みます。

  • idパラメーターとnameパラメーターを指定しない場合、既存のすべてのルールに関する情報 (ルール名を含む) が返されます。

\G

任意

返された各パラメータを別々の行に表示します。

  • 例1: IDがtestID1であるルールに関する情報を照会します。

    wlm list_rule
    id=1 \G; 

    サンプル結果:

    id: 1
                名前: testRule4
         description: NULL
                タイプ: QUERY
      resource_group: user_default
             有効: 1
            priority: 0
             version: 1
          life_cycle: BEFORE_QUEUEING
    compatible_group:
         valid_begin: null
           valid_end: null
             作成者: ケプラー
         update_user: ケプラー
         create_time: 2022-09-16 14:00:18
         update_time: 2022-09-16 14:00:18
           述語: [{"property":"${session.us er}","value":"test","operator":"equal" },{ "property":"${session.source_ip}","value":"1,2,3","operator":"in"}]
              アクション: ADD_PROPERTIES
               attrs: {"add_prop":{"query_priority":"low"}}
    1行セット (0.11秒) 

  • 例2: IDがtestID1で名前がtestRule4であるルールに関する情報を照会します。

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

    サンプル結果:

    id: 1
                名前: testRule4
         description: NULL
                タイプ: QUERY
      resource_group: user_default
             有効: 1
            priority: 0
             version: 1
          life_cycle: BEFORE_QUEUEING
    compatible_group:
         valid_begin: null
           valid_end: null
             作成者: ケプラー
         update_user: ケプラー
         create_time: 2022-09-16 14:00:18
         update_time: 2022-09-16 14:00:18
           述語: [{"property":"${session.us er}","value":"test","operator":"equal" },{ "property":"${session.source_ip}","value":"1,2,3","operator":"in"}]
              アクション: ADD_PROPERTIES
               attrs: {"add_prop":{"query_priority":"low"}}
    1行セット (0.09秒) 

ワークロード管理ルールの無効化

構文

wlm disable_rule id=<ruleID>

パラメーター

パラメーター

必須

説明

id

ルールの ID です。

説明

WLM list_ruleステートメントを実行して、ルールIDをクエリできます。 詳細については、このトピックの「ワークロード管理ルールに関する情報の照会」をご参照ください。

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

    wlm disable_rule id=1;

    サンプル結果:

    + ------------------ +
    | 結果 |
    + ------------------ +
    | 無効ルール1 |
    + ------------------ + 
  • 例2: IDがtestID1であるルールに関する情報を照会します。

    wlm list_rule id=1\G;

    サンプル結果:

    id: 1
                名前: testRule4
         description: NULL
                タイプ: QUERY
      resource_group: user_default
             有効: 0
            priority: 0
             version: 1
          life_cycle: BEFORE_QUEUEING
    compatible_group:
         valid_begin: null
           valid_end: null
             作成者: ケプラー
         update_user: ケプラー
         create_time: 2022-09-16 14:00:18
         update_time: 2022-09-16 14:00:18
           述語: [{"property":"${session.us er}","value":"test","operator":"equal" },{ "property":"${session.source_ip}","value":"1,2,3","operator":"in"}]
              アクション: 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;

    サンプル結果:

    + ---------------- +
    | 結果 |
    + ---------------- +
    | ルール1の有効化 |
    + ---------------- + 
  • 例2: IDがtestID1であるルールに関する情報を照会します。

    wlm list_rule id=1\G;

    サンプル結果:

    id: 1
                名前: testRule4
         description: NULL
                タイプ: QUERY
      resource_group: user_default
             有効: 1
            priority: 0
             version: 1
          life_cycle: BEFORE_QUEUEING
    compatible_group:
         valid_begin: null
           valid_end: null
             作成者: ケプラー
         update_user: ケプラー
         create_time: 2022-09-16 14:00:18
         update_time: 2022-09-16 14:00:18
           述語: [{"property":"${session.us er}","value":"test","operator":"equal" },{ "property":"${session.source_ip}","value":"1,2,3","operator":"in"}]
              アクション: 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;

    サンプル結果:

    + ---------------- +
    | 結果 |
    + ---------------- +
    | 削除ルール1 |
    + ---------------- + 
  • 例2: IDがtestID1であるルールに関する情報を照会します。

    wlm list_rule id=1\G;

    サンプル結果:

    空のセット

クエリのパターンハッシュ値の取得

構文

wlm calc_pattern_hash <SQL>

パラメーター

パラメーター

必須

説明

SQL

SELECTクエリまたはSELECTステートメントを含む書き込みクエリ。

クエリのパターンハッシュ値を取得します。

wlm calc_pattern_hash select * from tここでa=1およびb=2;

サンプル結果:

+ ----------------------------------- + ---------------------- +
| raw_sql | pattern_hash |
+ ----------------------------------- + ---------------------- +
| select * from t (a=1およびb=2) | -4759960226441980963 |
+ ----------------------------------- + ---------------------- + 

WLMステートメントのリストの照会

パラメーターなしでWLMステートメントを実行します。

wlm;

サンプル結果:

+ --------------------------- + ------------------------------------- +
| コマンド | 説明 |
+ --------------------------- + ------------------------------------- +
| calc_pattern_hash | クエリのpattern_hashの計算 |
| add_rule | 新しいルールを追加する |
| list_rule id=[x] | name=[x] | id/nameですべてのルールまたはフィルターをリストする |
| disable_rule id=[x] | idによるルールの無効化 |
| enable_rule id=[x] | idによるルールの有効化 |
| delete_rule id=[x] | idによるルールの削除 |
| update_rule id=[x] | idによるルールの更新 |
+ --------------------------- + ------------------------------------- + 

付録

付録1: プロパティ

カテゴリ

プロパティ

データ型

説明

クエリ

user

String

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

source_ip

String

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

query_task_type

Numeric

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

  • 1: SELECT

  • 2: 削除

  • 3: 更新

  • 4: SELECTに挿入するか、SELECTを上書きする

  • 5: ビューの作成

query_table_list

String list

クエリに含まれるテーブル。

query_db_list

String list

クエリに関与するデータベース。

pattern_hash

Numeric

クエリが属するSQLパターンのハッシュ値。

sql

String

クエリの元のSQLステートメント。

重要

このプロパティは、V3.1.8.3以降のAnalyticDB for MySQLクラスターでのみサポートされます。

ランタイム

説明

このカテゴリのプロパティは、実行統計に基づいてクエリを識別するために使用されます。

QUERY_PROCESS_TIME

Numeric

クエリのすべてのタスクによって消費されたCPU時間の合計。 値は、クエリによって必要とされるコンピューティングリソースのおおよその量を示すことができる。 単位:ミリ秒。

QUERY_EXECUTION_TIME

Numeric

クエリの実行時間 (キュー時間を除く) 。 単位:ミリ秒。

QUERY_SUBMITTED_TIME

Numeric

クエリが送信された時刻。

QUERY_TOTAL_TASK

Numeric

物理実行プラン内のタスクの総数。

QUERY_INPUT_DATA_SIZE

Numeric

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

QUERY_SHUFFLE_DATA_SIZE

Numeric

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

QUERY_OUTPUT_DATA_SIZE

Numeric

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

QUERY_PEAK_MEMORY

Numeric

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

QUERY_TOTAL_STAGES

Numeric

実行プランのステージの総数。

Pattern

説明

このカテゴリのプロパティは、実行履歴に基づいてクエリを識別するために使用されます。

パターンRT_P50

Numeric

SQLパターンのクエリの履歴実行期間の50パーセンタイル。 単位:ミリ秒。

パターンRT_P90

Numeric

SQLパターンのクエリの履歴実行期間の90パーセンタイル。 単位:ミリ秒。

PATTERN_EXECUTION_TIME_P50

Numeric

キュー時間を除く、SQLパターンのクエリの履歴実行期間の50パーセンタイル。 単位:ミリ秒。

PATTERN_EXECUTION_TIME_P90

Numeric

SQLパターンのクエリの過去の実行時間の90パーセンタイル (キューイング時間を除く) 。 単位:ミリ秒。

パターンWALL_TIME_P50

Numeric

SQLパターンのクエリのウォールタイムの50パーセンタイル。 単位:ミリ秒。

パターンWALL_TIME_P90

Numeric

SQLパターンのクエリのウォールタイムの90パーセンタイル。 単位:ミリ秒。

PATTERN_SHUFFLE_SIZE_AVG

Numeric

SQLパターンのクエリのシャッフルされたデータの平均量。 単位:バイト

パターンPEAK_MEMORY_AVG

Numeric

SQLパターンのクエリの平均ピークメモリ使用量。 単位:バイト

パターンINPUT_POSITION_AVG

Numeric

SQLパターンのクエリのデータの入力行の平均数。

PATTERN_OUTPUT_POSITION_AVG

Numeric

SQLパターンのクエリのデータの出力行の平均数。

付録2: 演算子

演算子

データ型

説明

>

Numeric

N/A

<

Numeric

N/A

=

数値と文字列

N/A

>=

Numeric

N/A

<=

Numeric

N/A

!=

数値と文字列

N/A

in

String list

2つの文字列リストが交差するかどうかを決定します。

を含む

String

文字列に別の文字列が含まれるかどうかを決定します。 この演算子は、元のSQL文を照会するために使用されます。

重要

この演算子は、V3.1.8.3以降のAnalyticDB for MySQLクラスターでのみサポートされます。

付録3: アクション

Action

説明

attrsパラメーターの設定方法

キル

クエリを終了します。Ends the query.

N/A

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。 より大きな値は、より高い優先度を指定する。

    • 値が文字列の場合の有効値:

      • 最低: 最低優先度 (5) 。

      • LOW: 低優先度 (15) 。

      • NORMAL: 通常の優先順位 (25) 。

      • 高: 最優先 (35) 。

    詳細については、「インタラクティブリソースグループの優先キューと同時実行制御」をご参照ください。

  • force: 既存のクエリプロパティを強制的に上書きするかどうかを指定します。 有効な値:

    • true (デフォルト)

    • false

    説明

    デフォルトでは、3.1.9.4より前のバージョンのAnalyticDB for MySQLクラスターのforceフィールドの値はfalseに設定されています。 AnalyticDB For MySQLクラスターのマイナーバージョンを照会する方法については、AnalyticDB for MySQLクラスターのバージョンを照会するにはどうすればよいですか?

BLOCK_WITH_PROB

クエリがキューに入る前に、特定の確率でクエリを終了します。 それは絞ることに使用することができます。

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

prob_value: 確率。 有効な値は 0~1 です。