AnalyticDB for MySQL menyediakan fitur kontrol aliran split untuk mengelola pemindaian split bersamaan yang berjalan dalam sebuah tugas atau pada sebuah node. Fitur ini mencegah ketidakstabilan node akibat konkurensi pemindaian tinggi dan penggunaan sumber daya berlebihan. Topik ini menjelaskan cara mengaktifkan fitur kontrol aliran split serta mengonfigurasi kuota untuk pemindaian split bersamaan.
Prasyarat
Sebuah kluster AnalyticDB for MySQL versi V3.1.10.0 atau lebih baru telah dibuat.
Informasi latar belakang
Saat menjalankan kueri di AnalyticDB for MySQL, sistem akan memindai data dari sumber data, dan pemindaian split diproses pada node penyimpanan atau node komputasi. Jika terdapat sejumlah besar pemindaian split yang berjalan bersamaan pada sebuah node, masalah berikut dapat terjadi:
Untuk tabel internal, pemindaian split bersamaan bersaing untuk mendapatkan sumber daya I/O dari node penyimpanan, meningkatkan utilisasi CPU dan penggunaan memori. Hal ini dapat menyebabkan ketidakstabilan node penyimpanan.
Untuk tabel eksternal, efisiensi pemindaian bervariasi berdasarkan sumber data. Jika jumlah pemindaian split bersamaan melebihi kuota, pemindaian split baru akan mengonsumsi sumber daya node komputasi dan memengaruhi kueri lainnya, bukan mempercepat pemindaian keseluruhan.
Untuk menyelesaikan masalah tersebut, AnalyticDB for MySQL menyediakan fitur kontrol aliran split. Secara default, fitur ini diaktifkan.
Istilah
Ikhtisar
Setiap tugas memiliki kuota untuk pemindaian split bersamaan. Jika jumlah pemindaian split bersamaan yang berjalan dalam sebuah tugas kurang dari kuota, tugas tersebut dapat memulai pemindaian split baru. Saat kuota tercapai, pemindaian split baru hanya dapat dimulai setelah pemindaian split yang sedang berjalan selesai. AnalyticDB for MySQL menyediakan fitur kontrol aliran split untuk node dan tugas. Kuota untuk pemindaian split bersamaan dalam sebuah tugas dapat disesuaikan secara dinamis berdasarkan kuota keseluruhan untuk pemindaian split bersamaan dari node tempat tugas tersebut berjalan.
Nonaktifkan atau aktifkan kembali fitur kontrol aliran split
Secara default, fitur kontrol aliran split diaktifkan. Anda dapat mengeksekusi salah satu pernyataan berikut untuk menonaktifkan atau mengaktifkan kembali fitur kontrol aliran split.
Nonaktifkan atau aktifkan kembali fitur kontrol aliran split untuk sebuah kluster.
SET ADB_CONFIG SPLIT_FLOW_CONTROL_ENABLED=true|false;Nonaktifkan atau aktifkan kembali fitur kontrol aliran split untuk sebuah kueri.
/*+ SPLIT_FLOW_CONTROL_ENABLED=true|false*/ SELECT * FROM table;
Mengizinkan kuota untuk pemindaian split bersamaan dalam sebuah tugas disesuaikan secara dinamis
Aktifkan dan nonaktifkan fitur yang mengizinkan kuota untuk pemindaian split bersamaan dalam sebuah tugas disesuaikan secara dinamis
Jika Anda menonaktifkan fitur yang mengizinkan kuota untuk pemindaian split bersamaan dalam sebuah tugas disesuaikan secara dinamis, kuota default untuk pemindaian split bersamaan dalam sebuah tugas adalah 32. Anda dapat mengeksekusi pernyataan SET ADB_CONFIG TARGET_RUNNING_SPLITS_LIMIT_PER_TASK=<value>; untuk mengubah nilai default.
Anda dapat mengaktifkan fitur untuk mengizinkan kuota untuk pemindaian split bersamaan dalam sebuah tugas disesuaikan secara dinamis berdasarkan kuota keseluruhan untuk pemindaian split bersamaan dari node tempat tugas tersebut berjalan.
SET ADB_CONFIG NODE_LEVEL_SPLIT_FLOW_CONTROL_ENABLED=true|false;Sebelum mengaktifkan fitur yang mengizinkan kuota untuk pemindaian split bersamaan dalam sebuah tugas disesuaikan secara dinamis, pastikan bahwa fitur kontrol aliran split diaktifkan. Anda dapat mengeksekusi pernyataan SHOW ADB_CONFIG KEY=SPLIT_FLOW_CONTROL_ENABLED; untuk memeriksa apakah fitur kontrol aliran split diaktifkan.
Menyesuaikan kuota untuk pemindaian split bersamaan dalam sebuah tugas
Metode
Anda dapat mengeksekusi pernyataan SET atau menggunakan hint untuk menyesuaikan kuota untuk pemindaian split bersamaan dalam sebuah tugas untuk sebuah kluster atau kueri.
Menyesuaikan kuota untuk pemindaian split bersamaan dalam sebuah tugas untuk sebuah kluster.
SET ADB_CONFIG <Parameter terkait kuota>=<nilai>;Menyesuaikan kuota untuk pemindaian split bersamaan dalam sebuah tugas untuk sebuah kueri.
/*+ <Parameter terkait kuota>=<nilai>*/SELECT * FROM orders;
Parameter terkait kuota
Tabel berikut menjelaskan parameter yang dapat digunakan untuk menyesuaikan kuota secara dinamis untuk pemindaian split bersamaan dalam sebuah tugas.
Parameter | Deskripsi |
MIN_RUNNING_SPLITS_LIMIT_PER_TASK | Kuota minimum untuk pemindaian split bersamaan dalam sebuah tugas. Nilai default adalah 1. Nilai valid berkisar dari Jika sejumlah besar pemindaian split bersamaan berjalan pada sebuah node setelah Anda mengaktifkan fitur yang mengizinkan kuota untuk pemindaian split bersamaan dalam sebuah tugas disesuaikan secara dinamis, kuota untuk pemindaian split bersamaan dalam tugas tersebut dikurangi secara dinamis, dan kuota setelah pengurangan tidak kurang dari nilai parameter ini. |
TARGET_RUNNING_SPLITS_LIMIT_PER_TASK | Kuota tengah untuk pemindaian split bersamaan dalam sebuah tugas. Kuota aktual ditingkatkan atau dikurangi secara dinamis berdasarkan nilai parameter ini. Nilai default adalah 32. Nilai valid berkisar dari nilai parameter Jika jumlah nilai tengah kuota semua tugas pada sebuah node tidak melebihi kuota node, kuota setiap tugas ditingkatkan secara dinamis. Sebaliknya, kuota setiap tugas dikurangi secara dinamis. |
MAX_RUNNING_SPLITS_LIMIT_PER_TASK | Kuota maksimum untuk pemindaian split bersamaan dalam sebuah tugas. Nilai default adalah 64. Nilai parameter ini harus lebih besar dari nilai parameter Jika sejumlah kecil pemindaian split bersamaan berjalan pada sebuah node setelah Anda mengaktifkan fitur yang mengizinkan kuota untuk pemindaian split bersamaan dalam sebuah tugas disesuaikan secara dinamis, kuota untuk pemindaian split bersamaan dalam tugas tersebut ditingkatkan secara dinamis, dan kuota setelah peningkatan tidak lebih besar dari nilai parameter ini. |
Saran tentang cara menyesuaikan kuota untuk pemindaian split bersamaan dalam sebuah tugas
AnalyticDB for MySQL memungkinkan Anda mengonfigurasi kuota berbeda untuk pemindaian split bersamaan dalam tugas untuk kueri berbeda. Dengan cara ini, sumber daya dapat dialokasikan ke tugas-tugas berdasarkan kebutuhan bisnis Anda. Contoh:
Jika sebuah kueri memerlukan waktu respons (RT) yang singkat dan jumlah pemindaian split yang kecil, seperti kueri titik, Anda dapat mengatur parameter
MIN_RUNNING_SPLITS_LIMIT_PER_TASK,TARGET_RUNNING_SPLITS_LIMIT_PER_TASK, danMAX_RUNNING_SPLITS_LIMIT_PER_TASKke nilai yang lebih besar, atau mengeksekusi pernyataanSET ADB_CONFIG SPLIT_FLOW_CONTROL_ENABLED=false;untuk menonaktifkan fitur kontrol aliran split. Dengan cara ini, semua pemindaian split dari kueri dapat segera dimulai.Jika sebuah kueri memerlukan sejumlah besar pemindaian split tetapi tidak memerlukan prioritas yang lebih tinggi, Anda dapat mengatur parameter
TARGET_RUNNING_SPLITS_LIMIT_PER_TASKke nilai yang lebih kecil untuk mengurangi dampak pada kueri penting saat sumber daya tidak mencukupi. Saat sumber daya menganggur, kuota untuk pemindaian split bersamaan dalam sebuah tugas dapat ditingkatkan secara dinamis untuk meningkatkan efisiensi pemindaian.Jika Anda meminta tabel eksternal, Anda dapat mengonfigurasi kuota berdasarkan faktor-faktor seperti batas transmisi sumber data.
Contoh
Atur kuota minimum untuk pemindaian split bersamaan dalam semua tugas untuk sebuah kluster menjadi 24.
SET ADB_CONFIG MIN_RUNNING_SPLITS_LIMIT_PER_TASK=24;Atur kuota minimum untuk pemindaian split bersamaan dalam tugas tertentu untuk sebuah kueri menjadi 10.
/*+ MIN_RUNNING_SPLITS_LIMIT_PER_TASK=10*/SELECT * FROM orders;Atur kuota maksimum untuk pemindaian split bersamaan dalam semua tugas untuk sebuah kluster menjadi 128.
SET ADB_CONFIG MAX_RUNNING_SPLITS_LIMIT_PER_TASK=128;Atur kuota maksimum untuk pemindaian split bersamaan dalam tugas tertentu untuk sebuah kueri menjadi 100.
/*+ MAX_RUNNING_SPLITS_LIMIT_PER_TASK=100*/SELECT * FROM adb_test;
Konfigurasikan kuota untuk pemindaian split bersamaan pada sebuah node
Node Penyimpanan
Secara default, kuota untuk pemindaian split bersamaan pada sebuah node penyimpanan adalah 256. Kami menyarankan agar Anda tidak mengubah nilai default karena kuota yang terlalu besar atau terlalu kecil dapat memengaruhi kinerja kluster. Anda dapat mengeksekusi pernyataan berikut untuk mengonfigurasi kuota untuk pemindaian split bersamaan pada sebuah node penyimpanan:
SET ADB_CONFIG WORKER_MAX_RUNNING_SOURCE_SPLITS_PER_NODE=256;Node Komputasi
Secara default, kuota untuk pemindaian split bersamaan pada sebuah node komputasi adalah 256. Kami menyarankan agar Anda tidak mengubah nilai default karena kuota yang terlalu besar atau terlalu kecil dapat memengaruhi kinerja kluster. Anda dapat mengeksekusi pernyataan berikut untuk mengonfigurasi kuota untuk pemindaian split bersamaan pada sebuah node komputasi:
SET ADB_CONFIG EXECUTOR_MAX_RUNNING_SOURCE_SPLITS_PER_NODE=256;
Anda dapat mengeksekusi pernyataan
SHOW ADB_CONFIGuntuk meminta kuota untuk pemindaian split bersamaan yang dikonfigurasi untuk sebuah node. Untuk informasi lebih lanjut, lihat SHOW ADB_CONFIG.Setelah mengonfigurasi kuota untuk pemindaian split bersamaan pada sebuah node, kuota tersebut mungkin tidak langsung berlaku karena alasan berikut:
Kuota yang Anda konfigurasi hanya berlaku untuk pemindaian split yang belum dimulai, bukan pemindaian split yang sedang berjalan pada node. Jika Anda mengurangi kuota untuk pemindaian split bersamaan, kuota tersebut hanya berlaku setelah pemindaian split yang sedang berjalan selesai.
Fitur kontrol aliran split memastikan bahwa jumlah pemindaian split bersamaan yang berjalan di setiap tugas lebih besar dari kuota minimum yang Anda konfigurasikan untuk sebuah tugas. Jika jumlah nilai minimum kuota semua tugas pada sebuah node lebih besar dari kuota node, jumlah pemindaian split bersamaan yang berjalan pada node tersebut mungkin melebihi kuota yang Anda konfigurasikan untuk node.