All Products
Search
Document Center

AnalyticDB:Konfigurasikan aturan manajemen workload

Last Updated:Jun 19, 2026

Aturan Workload Management (WLM) mengontrol perilaku kueri di kluster AnalyticDB for MySQL Data Warehouse Edition. Anda dapat menentukan aturan berdasarkan properti kueri—seperti user, IP sumber, jenis kueri, atau pola eksekusi historis—dan menetapkan aksi seperti mengakhiri kueri, menyesuaikan prioritas, atau mengalihkan kueri ke kelompok sumber daya yang berbeda.

Prasyarat

Pastikan Anda memiliki:

  • Kluster AnalyticDB for MySQL Data Warehouse Edition

  • Versi minor kluster 3.1.6.3 atau lebih baru

Catatan

Untuk memeriksa atau memperbarui versi minor Anda, lihat Update the minor version of a cluster.

Catatan penggunaan

  • Memodifikasi aturan dengan sintaks WLM memerlukan versi kluster V3.1.10.0 atau lebih baru.

  • AnalyticDB for MySQL menggunakan kebijakan soft delete untuk aturan. Nama aturan yang sebelumnya telah dihapus tidak dapat digunakan kembali untuk aturan baru.

Buat aturan

Sintaks

wlm add_rule
name=<rule_name>
type=query
action=<action>
predicate='<property><operator><value> && <property><operator><value>'
[attrs='<rule_attrs>']
[resource_group=<resource_group>]
[description='<description>']
[compatible_group=<compatible_group_name>]
[enabled=<true|false>]
[priority=<priority>]
Catatan

Tidak diperbolehkan ada spasi di kedua sisi tanda sama dengan (=).

Parameter

Parameter

Wajib

Deskripsi

name

Ya

Nama aturan. Harus unik di antara semua aturan yang ada maupun yang telah dihapus.

type

Ya

Jenis aturan. Tetapkan ke query.

action

Ya

Aksi yang dilakukan saat kueri sesuai. Lihat Actions.

predicate

Ya

Kondisi pencocokan yang digabungkan dengan && (logika AND). Format: <property><operator><value>. Bungkus seluruh nilai dalam tanda kutip tunggal. Lihat Properties dan Operators.

attrs

Tidak

Atribut aksi. Diperlukan ketika action adalah RESUBMIT_RESOURCE_GROUP, ADD_PROPERTIES, atau BLOCK_WITH_PROB. Bungkus dalam tanda kutip tunggal. Lihat Actions.

resource_group

Tidak

Nama kelompok sumber daya. Default: user_default. Untuk menemukan nama kelompok sumber daya, buka AnalyticDB for MySQL console, klik ID kluster, lalu buka halaman Resource Management.

description

Tidak

Deskripsi aturan. Bungkus dalam tanda kutip tunggal.

compatible_group

Tidak

Nama grup kompatibilitas. Aturan dalam grup yang sama semuanya dievaluasi ketika salah satu aturan cocok, terlepas dari urutan prioritas.

enabled

Tidak

Apakah aturan aktif. Nilai: true (default), false.

priority

Tidak

Prioritas aturan. Default: 0. Aturan dicocokkan dalam urutan prioritas menurun. Saat suatu aturan cocok, evaluasi berhenti. Jika beberapa aturan memiliki prioritas yang sama, aturan yang dibuat paling awal yang berlaku.

Catatan

Dalam nilai predicate, tambahkan spasi hanya di kedua sisi operator in. Jangan tambahkan spasi di sekitar operator lainnya.

Contoh

Akhiri kueri berdasarkan user dan latensi pola

Akhiri kueri dari user test yang durasi eksekusi historis P50-nya melebihi 60.000 ms:

wlm add_rule
name=testRule1
type=query
action=kill
predicate='user=test && PATTERN_RT_P50>60000';
+---------------------------------+
| result                          |
+---------------------------------+
| insert rule 'testRule1' success |
+---------------------------------+

Tambahkan petunjuk prioritas kueri berdasarkan user dan IP

Turunkan prioritas kueri dari user test yang berasal dari alamat IP tertentu:

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 |
+---------------------------------+

Akhiri kueri SELECT untuk kelompok sumber daya tertentu

Buat aturan dengan prioritas 5 untuk testResourceGroup yang mengakhiri kueri SELECT dari user test:

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 |
+---------------------------------+

Modifikasi aturan

Penting

Memodifikasi aturan memerlukan versi kluster V3.1.10.0 atau lebih baru. Untuk memeriksa versi Anda, lihat How do I view the minor version of a cluster?. Untuk memperbarui versi, hubungi dukungan teknis.

Sintaks

wlm update_rule
id=<rule_id>
name=<rule_name>
type=query
action=<action>
predicate='<property><operator><value> && <property><operator><value>'
[attrs='<rule_attrs>']
[resource_group=<resource_group>]
[description='<description>']
[compatible_group=<compatible_group_name>]
[enabled=<true|false>]
[priority=<priority>]
Catatan

Tidak diperbolehkan ada spasi di kedua sisi tanda sama dengan (=).

Parameter

Semua parameter bersifat opsional untuk update_rule. Tentukan id atau name untuk mengidentifikasi aturan target.

Parameter

Deskripsi

id

ID aturan (unik, tidak dapat diubah). Jalankan wlm list_rule untuk menemukan ID aturan.

name

Nama aturan. Untuk mengganti nama aturan, tentukan aturan berdasarkan id. Jika nama baru cocok dengan aturan yang sudah ada, aturan tersebut akan ditimpa.

type

Jenis aturan. Tetapkan ke query.

action

Aksi yang dilakukan. Lihat Actions.

predicate

Kondisi pencocokan yang diperbarui. Lihat Properties dan Operators.

attrs

Atribut aksi yang diperbarui. Diperlukan ketika action adalah RESUBMIT_RESOURCE_GROUP, ADD_PROPERTIES, atau BLOCK_WITH_PROB.

resource_group

Nama kelompok sumber daya. Default: user_default.

description

Deskripsi aturan.

compatible_group

Nama grup kompatibilitas.

enabled

true (default) atau false.

priority

Prioritas aturan. Default: 0.

Contoh

Ganti nama aturan

wlm update_rule
id=2
name=Rule;
+-----------------+
| result          |
+-----------------+
| update rule 2   |
+-----------------+

Perbarui kondisi predikat

Ubah ambang batas latensi P50 testRule1 dari 60.000 ms menjadi 80.000 ms:

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

Atau gunakan ID aturan:

wlm update_rule
id=1
predicate='user=test && PATTERN_RT_P50>80000';
+-----------------+
| result          |
+-----------------+
| update rule 1   |
+-----------------+

Ubah aksi KILL menjadi RESUBMIT_RESOURCE_GROUP

Alihkan kueri yang sesuai ke kelompok sumber daya berbeda alih-alih mengakhirinya:

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

Untuk detail format attrs, lihat Actions.

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

Daftar aturan

Sintaks

wlm list_rule
[id=<rule_id>]
[name='<rule_name>'\G]

Parameter

Parameter

Wajib

Deskripsi

id

Tidak

Filter berdasarkan ID aturan. Hilangkan id dan name untuk menampilkan semua aturan.

name

Tidak

Filter berdasarkan nama aturan. Bungkus dalam tanda kutip tunggal.

\G

Tidak

Tampilkan setiap bidang pada baris terpisah.

Contoh

Daftar aturan berdasarkan ID

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)

Daftar aturan berdasarkan ID dan nama

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

Nonaktifkan aturan

wlm disable_rule id=<rule_id>

Jalankan wlm list_rule untuk menemukan ID aturan.

Contoh

wlm disable_rule id=1;
+------------------+
| result           |
+------------------+
| disable rule 1   |
+------------------+

Verifikasi bahwa aturan dinonaktifkan (enabled: 0):

wlm list_rule id=1\G;

Aktifkan aturan

wlm enable_rule id=<rule_id>

Jalankan wlm list_rule untuk menemukan ID aturan.

Contoh

wlm enable_rule id=1;
+----------------+
| result         |
+----------------+
| enable rule 1  |
+----------------+

Verifikasi bahwa aturan diaktifkan (enabled: 1):

wlm list_rule id=1\G;

Hapus aturan

wlm delete_rule id=<rule_id>

Jalankan wlm list_rule untuk menemukan ID aturan. Nama aturan yang dihapus tidak dapat digunakan kembali.

Contoh

wlm delete_rule id=1;
+----------------+
| result         |
+----------------+
| delete rule 1  |
+----------------+

Verifikasi penghapusan:

wlm list_rule id=1\G;
Empty set

Dapatkan hash pola kueri

Gunakan calc_pattern_hash untuk mendapatkan nilai hash dari pola SQL. Anda kemudian dapat menggunakan nilai ini dengan properti pattern_hash dalam predicate untuk menargetkan pola kueri tertentu.

Sintaks

wlm calc_pattern_hash <SQL>

Parameter <SQL> menerima kueri SELECT atau kueri write yang berisi pernyataan SELECT.

Contoh

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 |
+-----------------------------------+----------------------+

Daftar semua perintah 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                 |
+---------------------------+-------------------------------------+

Referensi

Properti

Properti menentukan aspek-aspek kueri yang akan dievaluasi dalam predicate aturan.

Properti kueri

Properti

Tipe data

Deskripsi

user

String

User yang mengirimkan kueri.

source_ip

String

Alamat IP klien.

query_task_type

Numerik

Jenis kueri: 1 (SELECT), 2 (DELETE), 3 (UPDATE), 4 (INSERT INTO SELECT / INSERT OVERWRITE SELECT / REPLACE INTO SELECT), 5 (CREATE VIEW).

query_table_list

Daftar string

Tabel yang terlibat dalam kueri.

query_db_list

Daftar string

Database yang terlibat dalam kueri.

pattern_hash

Numerik

Nilai hash dari pola SQL.

sql

String

Pernyataan SQL asli. Memerlukan V3.1.8.3 atau lebih baru.

Properti runtime

Properti runtime mengevaluasi kueri berdasarkan statistik eksekusi saat ini.

Properti

Tipe data

Unit

Deskripsi

QUERY_PROCESS_TIME

Numerik

ms

Total waktu CPU yang dikonsumsi oleh semua tugas.

QUERY_EXECUTION_TIME

Numerik

ms

Durasi eksekusi, tidak termasuk waktu antrian.

QUERY_SUBMITTED_TIME

Numerik

-

Timestamp pengiriman.

QUERY_TOTAL_TASK

Numerik

-

Total tugas dalam rencana eksekusi fisik.

QUERY_INPUT_DATA_SIZE

Numerik

MB

Data yang dibaca oleh kueri.

QUERY_SHUFFLE_DATA_SIZE

Numerik

MB

Data yang di-shuffle selama eksekusi.

QUERY_OUTPUT_DATA_SIZE

Numerik

MB

Data yang dihasilkan oleh kueri.

QUERY_PEAK_MEMORY

Numerik

MB

Penggunaan memori puncak.

QUERY_TOTAL_STAGES

Numerik

-

Total tahapan dalam rencana eksekusi.

Properti pola

Properti pola mengevaluasi kueri berdasarkan data eksekusi historis untuk pola SQL tertentu.

Properti

Tipe data

Unit

Deskripsi

PATTERN_RT_P50

Numerik

ms

Durasi eksekusi persentil ke-50.

PATTERN_RT_P90

Numerik

ms

Durasi eksekusi persentil ke-90.

PATTERN_EXECUTION_TIME_P50

Numerik

ms

Durasi eksekusi persentil ke-50, tidak termasuk waktu antrian.

PATTERN_EXECUTION_TIME_P90

Numerik

ms

Durasi eksekusi persentil ke-90, tidak termasuk waktu antrian.

PATTERN_WALL_TIME_P50

Numerik

ms

Waktu dinding (wall time) persentil ke-50.

PATTERN_WALL_TIME_P90

Numerik

ms

Waktu dinding (wall time) persentil ke-90.

PATTERN_SHUFFLE_SIZE_AVG

Numerik

bytes

Ukuran rata-rata data shuffle.

PATTERN_PEAK_MEMORY_AVG

Numerik

bytes

Penggunaan memori puncak rata-rata.

PATTERN_INPUT_POSITION_AVG

Numerik

-

Jumlah rata-rata baris input.

PATTERN_OUTPUT_POSITION_AVG

Numerik

-

Jumlah rata-rata baris output.

Operator

Operator

Tipe yang didukung

Deskripsi

>

Numerik

Lebih besar dari.

<

Numerik

Lebih kecil dari.

=

Numerik, String

Sama dengan.

>=

Numerik

Lebih besar dari atau sama dengan.

<=

Numerik

Lebih kecil dari atau sama dengan.

!=

Numerik, String

Tidak sama dengan.

in

Daftar string

Memeriksa apakah dua daftar string saling berpotongan. Tambahkan spasi di kedua sisi operator ini.

contains

String

Memeriksa apakah suatu string berisi string lain. Gunakan dengan properti sql. Memerlukan V3.1.8.3 atau lebih baru.

Actions

Action

Deskripsi

attrs format

KILL

Mengakhiri kueri.

Tidak diperlukan.

RESUBMIT_RESOURCE_GROUP

Menghentikan eksekusi di kelompok sumber daya saat ini dan mengirim ulang kueri ke kelompok sumber daya yang berbeda.

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

ADD_PROPERTIES

Memodifikasi properti kueri seperti prioritas.

{"add_prop":{"query_priority":"<priority>","force":"false"}}

BLOCK_WITH_PROB

Mengakhiri kueri dengan probabilitas tertentu sebelum masuk antrian. Gunakan untuk pembatasan kecepatan (throttling).

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

Detail ADD_PROPERTIES:

Detail BLOCK_WITH_PROB:

  • prob: Probabilitas mengakhiri kueri. Nilai valid: 0 hingga 1.