ApsaraDB for SelectDB memungkinkan Anda menggunakan fitur kelompok beban kerja untuk mengisolasi sumber daya komputasi dalam kluster secara berbasis perangkat lunak. Topik ini menjelaskan fitur kelompok beban kerja dari ApsaraDB for SelectDB dan cara menggunakannya untuk mengelola sumber daya komputasi.
Ikhtisar
Kelompok beban kerja membatasi penggunaan sumber daya tugas dalam kluster komputasi dengan membatasi penggunaan sumber daya komputasi dan memori oleh tugas-tugas dalam kelompok beban kerja pada node komputasi tunggal.
Dalam skenario bisnis di mana Anda dapat mengontrol kapan tugas kueri beban tinggi dan impor dijalankan serta ingin memaksimalkan sumber daya kluster komputasi, Anda dapat mengaitkan tugas-tugas tersebut dengan kelompok beban kerja terpisah. Sebagai contoh, Anda dapat mengaitkan tugas komputasi offline terjadwal dari SelectDB dengan kelompok beban kerja terpisah. Selain itu, jika bisnis Anda memiliki jam puncak yang rutin, Anda juga dapat menggunakan kelompok beban kerja untuk mengisolasi sumber daya bagi tugas-tugas bisnis.
Anda dapat menggunakan kelompok beban kerja untuk mengisolasi sumber daya dari dimensi berikut berdasarkan skenario bisnis Anda:
Mengisolasi sumber daya untuk kueri besar dan kecil.
Mengisolasi sumber daya untuk kueri panjang dan pendek.
Mengisolasi sumber daya untuk kueri pada data dingin dan data panas.
Mengisolasi sumber daya untuk tugas impor offline dan real-time.
Menggunakan kelompok beban kerja
Bagian ini menjelaskan cara membuat, menghapus, memodifikasi, dan melihat kelompok beban kerja.
Kami menyarankan Anda menggunakan akun admin dengan izin penuh untuk melakukan operasi pada kelompok beban kerja.
Membuat kelompok beban kerja
Anda dapat mengeksekusi pernyataan berikut untuk membuat kelompok beban kerja. Kelompok beban kerja dapat digunakan untuk mengisolasi sumber daya CPU dan memori dalam kluster komputasi.
Sintaksis
CREATE WORKLOAD GROUP [IF NOT EXISTS] 'rg_name'
PROPERTIES (
property_list
);Parameter
Parameter | Wajib | Deskripsi |
rg_name | Ya | Nama kelompok beban kerja. |
Tabel berikut menjelaskan parameter dalam PROPERTIES.
Parameter | Wajib | Deskripsi |
cpu_share | Ya | Waktu CPU yang tersedia untuk kelompok beban kerja. Parameter ini digunakan untuk mengimplementasikan isolasi lunak sumber daya CPU. Nilai parameter cpu_share adalah nilai relatif yang menunjukkan bobot sumber daya CPU yang dapat diperoleh kelompok beban kerja. Sebagai contoh, kelompok beban kerja berikut dibuat: Jika sistem hanya memiliki satu kelompok beban kerja yang berjalan, kelompok beban kerja tersebut dapat memperoleh semua sumber daya CPU, terlepas dari nilai parameter |
memory_limit | Ya | Persentase memori kluster komputasi yang dapat digunakan oleh kelompok beban kerja. Nilai absolut batas memori untuk kelompok beban kerja dihitung dengan menggunakan rumus berikut: Dalam kebanyakan kasus, tugas dalam kelompok beban kerja dapat menggunakan memori yang ditentukan oleh parameter memory_limit. Jika penggunaan memori kelompok beban kerja melebihi batas, tugas dengan penggunaan memori tertinggi dalam kelompok ini mungkin dibatalkan untuk melepaskan memori berlebih. Catatan Jumlah nilai memory_limit untuk semua kelompok beban kerja dalam sistem tidak boleh melebihi 100%. Jika tidak, kesalahan akan dilaporkan. |
enable_memory_overcommit | Tidak | Menentukan apakah akan mengaktifkan isolasi lunak memori untuk kelompok beban kerja. Nilai default: false. Jika Anda mengatur parameter ini ke false, isolasi keras memori diaktifkan untuk kelompok beban kerja. Jika sistem mendeteksi bahwa penggunaan memori kelompok beban kerja melebihi batas, sistem segera membatalkan tugas dengan penggunaan memori tertinggi dalam kelompok untuk melepaskan memori berlebih. Jika Anda mengatur parameter ini ke true, isolasi lunak memori diaktifkan untuk kelompok beban kerja. Jika sistem memiliki sumber daya memori yang menganggur, kelompok beban kerja dapat memperoleh lebih banyak memori sistem meskipun penggunaan memori melebihi batas yang ditentukan oleh parameter memory_limit. Jika total memori sistem tidak mencukupi, sistem membatalkan tugas dengan penggunaan memori tertinggi untuk melepaskan sebagian memori berlebih. Ini mengurangi total penggunaan memori sistem. Jika Anda mengatur parameter ini ke true untuk beberapa kelompok beban kerja, kami menyarankan Anda mengonfigurasi parameter memory_limit untuk semua kelompok beban kerja sehingga jumlah nilai memory_limit kurang dari 100%. Dengan cara ini, memori cadangan disediakan untuk kelompok beban kerja yang dapat melakukan overcommit memori. |
max_concurrency | Tidak | Variabel yang mengontrol jumlah maksimum kueri konkuren yang diizinkan untuk kelompok beban kerja. Secara default, jumlah maksimum kueri konkuren tidak dibatasi. Dalam ApsaraDB for SelectDB, jumlah maksimum kueri konkuren dihitung dengan menggunakan rumus berikut: |
max_queue_size | Tidak | Variabel yang mengontrol panjang maksimum antrian kueri. Secara default, panjang maksimum antrian kueri tidak dibatasi. Dalam ApsaraDB for SelectDB, panjang maksimum antrian kueri dihitung dengan menggunakan rumus berikut: |
queue_timeout | Tidak | Variabel yang mengontrol durasi maksimum kueri menunggu dalam antrian, dalam milidetik. Secara default, durasi maksimum kueri menunggu dalam antrian tidak dibatasi. Dalam ApsaraDB for SelectDB, durasi maksimum dihitung dengan menggunakan rumus berikut: |
Contoh
Buat kelompok beban kerja bernama g1.
CREATE WORKLOAD GROUP IF NOT EXISTS g1
PROPERTIES (
"cpu_share"="10",
"memory_limit"="30%",
"enable_memory_overcommit"="true"
);Hapus kelompok beban kerja
Anda dapat mengeksekusi pernyataan berikut untuk menghapus kelompok beban kerja.
Sintaksis
DROP WORKLOAD GROUP [IF EXISTS] 'rg_name'Contoh
Hapus kelompok beban kerja bernama g1.
DROP WORKLOAD GROUP IF EXISTS g1;Modifikasi kelompok beban kerja
Anda dapat mengeksekusi pernyataan berikut untuk memodifikasi kelompok beban kerja.
Sintaksis
ALTER WORKLOAD GROUP "rg_name"
PROPERTIES (
property_list
);Parameter
Untuk informasi lebih lanjut tentang parameter dalam PROPERTIES, lihat bagian Parameter dari topik ini.
Contoh
Modifikasi kelompok beban kerja bernama g1.
ALTER WORKLOAD GROUP g1
PROPERTIES (
"cpu_share"="30",
"memory_limit"="30%"
);Saat Anda memodifikasi parameter memory_limit, pastikan bahwa jumlah nilai memory_limit untuk semua kelompok beban kerja tidak melebihi 100%.
Anda hanya dapat memodifikasi beberapa parameter. Sebagai contoh, Anda hanya dapat memodifikasi parameter cpu_share. Dalam hal ini, Anda hanya perlu menentukan parameter cpu_share dalam PROPERTIES.
Lihat kelompok beban kerja
Anda dapat mengeksekusi pernyataan berikut untuk melihat kelompok beban kerja di mana pengguna saat ini memiliki izin USAGE-PRIV.
Sintaksis
SHOW WORKLOAD GROUPS;Contoh
Lihat semua kelompok beban kerja.
mysql> SHOW WORKLOAD GROUPS;
+----------+--------+--------------------------+---------+
| Id | Name | Item | Value |
+----------+--------+--------------------------+---------+
| 10343386 | normal | cpu_share | 10 |
| 10343386 | normal | memory_limit | 30% |
| 10343386 | normal | enable_memory_overcommit | true |
| 10352416 | g1 | memory_limit | 20% |
| 10352416 | g1 | cpu_share | 10 |
+----------+--------+--------------------------+---------+Contoh lengkap
Contoh berikut menunjukkan cara mengaktifkan fitur kelompok beban kerja dalam kluster SelectDB dan menggunakan kelompok beban kerja.
Atur item konfigurasi FE
enable_workload_groupmenjadi true.
enable_workload_group=trueItem konfigurasi ini tidak dapat ditentukan secara langsung. Jika Anda ingin menentukan item konfigurasi ini, ajukan tiket.
Item konfigurasi ini adalah item konfigurasi dinamis. Jika Anda memodifikasi item konfigurasi ini dan memulai ulang instans Anda, sistem secara otomatis membuat kelompok beban kerja default bernama
normal. Jika Anda memodifikasi item konfigurasi ini tetapi tidak memulai ulang instans Anda, tidak ada kelompok beban kerja default yang dibuat. Untuk informasi lebih lanjut tentang cara memodifikasi item konfigurasi ini, ajukan tiket.
Buat kelompok beban kerja.
CREATE WORKLOAD GROUP IF NOT EXISTS g1
properties (
"cpu_share"="10",
"memory_limit"="30%",
"enable_memory_overcommit"="true"
);Atur variabel sesi experimental_enable_pipeline_engine menjadi true untuk mengaktifkan mesin eksekusi alur kerja. Isolasi CPU untuk kelompok beban kerja diimplementasikan berdasarkan mesin eksekusi alur kerja.
set experimental_enable_pipeline_engine = true;Kaitkan kueri dengan kelompok beban kerja sehingga batas sumber daya yang ditentukan untuk kelompok beban kerja dapat berlaku. Anda dapat menggunakan salah satu metode berikut untuk mengaitkan kueri dengan kelompok beban kerja:
Konfigurasikan properti pengguna default_workload_group untuk menentukan kelompok beban kerja default. Jika kelompok beban kerja default dibuat secara otomatis oleh sistem, nilai default properti ini adalah
normal.set property 'default_workload_group' = 'g1';Pernyataan di atas menentukan g1 sebagai kelompok beban kerja default yang akan digunakan oleh kueri pengguna saat ini.
Konfigurasikan variabel sesi workload_group untuk menentukan kelompok beban kerja yang ingin Anda gunakan. Variabel ini kosong secara default.
set workload_group = 'g1';Prioritas variabel sesi
workload_grouplebih tinggi daripada properti penggunadefault_workload_group. Jika variabelworkload_groupkosong, kueri dikaitkan dengan kelompok beban kerja yang ditentukan oleh propertidefault_workload_group. Jika variabelworkload_grouptidak kosong, kueri dikaitkan dengan kelompok beban kerja yang ditentukan oleh variabelworkload_group.Jika Anda bukan administrator, Anda harus terlebih dahulu mengeksekusi pernyataan SHOW WORKLOAD GROUPS untuk memeriksa apakah Anda dapat melihat kelompok beban kerja yang ingin Anda gunakan. Jika kelompok beban kerja tidak ditampilkan, kelompok beban kerja mungkin tidak ada, atau Anda tidak memiliki izin untuk menggunakan kelompok beban kerja. Dalam hal ini, kesalahan dilaporkan saat Anda mengeksekusi kueri.
Eksekusi kueri. Kueri dikaitkan dengan kelompok beban kerja yang ditentukan. Dalam hal ini, batas sumber daya yang ditentukan untuk kelompok beban kerja berlaku.