Topik ini menjelaskan praktik terbaik untuk manajemen beban kerja.
Prasyarat
Versi kernel kluster AnalyticDB for MySQL Anda harus 3.1.6.3 atau lebih baru.
Untuk melihat dan memperbarui versi minor kluster AnalyticDB for MySQL, masuk ke Konsol AnalyticDB for MySQL dan buka bagian Configuration Information pada halaman Cluster Information.
Sebelum eksekusi: pengendalian aliran kueri
Sebelum dieksekusi, sistem dapat menentukan prioritas setiap kueri berdasarkan aturan manajemen beban kerja, menetapkan kueri ke antrian tertentu, lalu mengeksekusinya sesuai dengan tingkat konkurensi maksimum yang dikonfigurasi untuk masing-masing antrian.
Antrian prioritas:
Pengendalian aliran berdasarkan nilai hash pola SQL
AnalyticDB for MySQL dapat melakukan pengendalian aliran kueri berdasarkan pola SQL. Anda dapat menggunakan perintah wlm calc_pattern_hash untuk menghitung nilai hash dari suatu pola SQL dan mengonfigurasi aturan agar semua kueri dengan nilai hash pola yang sama ditempatkan ke antrian prioritas rendah. Selanjutnya, Anda dapat menyesuaikan tingkat konkurensi antrian tersebut untuk menerapkan pengendalian aliran.
Buat aturan berikut untuk menetapkan kueri dengan pola tertentu ke antrian prioritas rendah.
wlm add_rule name=confine_query type=query action=ADD_PROPERTIES predicate='pattern_hash=XXXXXXXXXXXXXX' attrs='{ "add_prop": { "query_priority": "low" } }'CatatanUntuk informasi selengkapnya tentang perintah
wlm calc_pattern_hash, lihat Menghitung nilai pattern_hash.Ubah tingkat konkurensi antrian prioritas rendah untuk menerapkan pengendalian aliran. Konkurensi default adalah 20.
SET ADB_CONFIG XIHE_ENV_QUERY_LOW_PRIORITY_MAX_CONCURRENT_SIZE=20;
Pengendalian aliran kueri besar berdasarkan informasi eksekusi historis
Buat aturan berikut untuk menetapkan kueri dengan waktu eksekusi P50 historis lebih dari 2.000 untuk pola tersebut ke antrian prioritas rendah.
wlm add_rule name=confine_query type=query action=ADD_PROPERTIES predicate='PATTERN_EXECUTION_TIME_P50>2000' attrs='{ "add_prop": { "query_priority": "low" } }'Ubah tingkat konkurensi antrian prioritas rendah untuk menerapkan pengendalian aliran. Konkurensi default adalah 20.
SET ADB_CONFIG XIHE_ENV_QUERY_LOW_PRIORITY_MAX_CONCURRENT_SIZE=20;
Saat eksekusi: mengontrol kueri abnormal
Jika terjadi kemacetan kritis pada kluster AnalyticDB for MySQL, Anda dapat mengonfigurasi aturan untuk menghentikan tugas jenis kueri tertentu. Hal ini mencegah kegagalan pekerjaan tulis yang dapat disebabkan oleh pernyataan KILL ALL untuk menghentikan semua kueri.
Hentikan semua kueri SELECT
Untuk menghentikan kueri SELECT, Anda dapat mengatur QUERY_TASK_TYPE menjadi 1. Setelah pengaturan ini diterapkan, semua kueri SELECT aktif akan dihentikan. Namun, hal ini juga akan menghentikan semua kueri SELECT berikutnya. Oleh karena itu, Anda harus menghapus atau menonaktifkan aturan ini setelah beban sistem berkurang. Untuk informasi selengkapnya tentang cara menghapus atau menonaktifkan aturan, lihat WLM.
wlm add_rule
name=kill_select_query
type=query
action=KILL
predicate='query_task_type=1'Hentikan kueri dari pengguna tertentu
Jika Anda mengidentifikasi bahwa kueri dari pengguna tertentu menyebabkan kluster AnalyticDB for MySQL menjadi tidak tersedia, Anda dapat menghentikan semua kueri dari pengguna tersebut.
wlm add_rule
name=kill_query_from_user
type=query
action=KILL
predicate='user=testuser1'Hentikan kueri dari alamat IP tertentu
Jika Anda melacak kueri yang menyebabkan kluster AnalyticDB for MySQL menjadi tidak tersedia ke alamat IP tertentu, Anda dapat menghentikan semua kueri dari alamat IP tersebut.
wlm add_rule
name=kill_query_from_ip
type=query
action=KILL
predicate='source_ip=10.10.XX.XX'Hentikan semua kueri yang menggunakan memori lebih dari 100 MB
Jika kueri besar menyebabkan ketidakstabilan pada kluster AnalyticDB for MySQL, Anda dapat mengonfigurasi aturan untuk menghentikan semua kueri yang menggunakan memori lebih dari 100 MB. Ini mencakup kueri SELECT dan operasi tulis.
wlm add_rule
name=kill_Big_query
type=query
action=KILL
predicate='QUERY_PEAK_MEMORY>=100'Hentikan kueri SELECT yang menggunakan memori lebih dari 100 MB
Jika kueri besar menyebabkan ketidakstabilan pada kluster AnalyticDB for MySQL, Anda dapat mengonfigurasi aturan untuk menghentikan kueri SELECT yang menggunakan memori lebih dari 100 MB. Pendekatan ini membatasi kueri besar tanpa memengaruhi pekerjaan tulis.
wlm add_rule
name=kill_Big_query
type=query
action=KILL
predicate='QUERY_PEAK_MEMORY>100 && query_task_type=1'Pengendalian aliran rutin (pengendalian aliran kueri pada database atau tabel)
Anda dapat menerapkan pengendalian aliran terhadap kueri yang memindai tabel atau database tertentu dengan menetapkannya ke antrian prioritas rendah.
Buat aturan berikut.
wlm add_rule name=confine_query_in_table type=query action=ADD_PROPERTIES predicate='query_table_list in database.table1, database.table2' attrs='{ "add_prop": { "query_priority": "low" } }'Ubah tingkat konkurensi antrian prioritas rendah untuk menerapkan pengendalian aliran. Konkurensi default adalah 20.
SET ADB_CONFIG XIHE_ENV_QUERY_LOW_PRIORITY_MAX_CONCURRENT_SIZE=20;