Pelajari cara mengaktifkan, mengonfigurasi, dan mengontrol ePQ untuk PolarDB for MySQL, termasuk ambang batas eksekusi paralel, sintaks hint, dan batasan yang diketahui.
Sebelum memulai
-
Pastikan kluster Anda mendukung elastic parallel query.
-
Elastic parallel query single-node:
-
Mesin database: 8.0.1 dengan versi revisi 8.0.1.0.5 atau lebih baru.
-
Edisi database: Enterprise Edition.
-
-
Query Paralel Elastis node tunggal:
-
Mesin database: 8.0.2 dengan versi revisi 8.0.2.1.4.1 atau lebih baru.
-
Edisi database: Enterprise Edition.
-
-
Elastic parallel query multi-node:
-
Mesin database: 8.0.2 dengan versi revisi 8.0.2.2.6 atau lebih baru.
-
Edisi database: Enterprise Edition.
-
-
-
Tinjau Batasan dan masalah kompatibilitas sebelum mengaktifkan kueri paralel.
-
Node read-only dan node RW sama-sama mendukung kueri paralel, tetapi secara default dinonaktifkan pada node RW. Untuk mengaktifkannya pada node RW, Sesuaikan tingkat paralelisme secara adaptif.
Aktifkan atau nonaktifkan kueri paralel
Aktifkan
Buka . Pada halaman Basic Information kluster, temukan bagian Database Connection. Pilih titik akhir target dan klik Configure. Di kotak dialog Edit Endpoint Configuration, enable kueri paralel dan konfigurasi Degree of Parallelism.
Pengaturan yang direkomendasikan dan catatan:
-
Degree of Parallelism menentukan jumlah maksimum thread pekerja yang dapat digunakan oleh satu kueri pada satu node komputasi. Total thread per kueri = Degree of Parallelism × jumlah node.
-
Tingkatkan tingkat paralelisme secara bertahap. Jangan melebihi seperempat dari jumlah core CPU. Mulailah dengan nilai 2. Setelah satu hari, naikkan nilainya jika beban CPU tetap rendah; hentikan jika beban meningkat.
-
Mengaktifkan kueri paralel hanya berlaku untuk koneksi baru.
-
Pengaturan Konsol dan parameter kluster saling berinteraksi sebagai berikut:
-
Parameter
loose_max_parallel_degreeberlaku untuk semua node dan koneksi dalam kluster, tetapi penyesuaian melalui konsol hanya berlaku untuk titik akhir yang dikonfigurasi. -
Jika pengaturan konsol dan
loose_max_parallel_degreekeduanya dikonfigurasi, pengaturan konsol memiliki prioritas lebih tinggi. Gunakan konsol untuk mengaktifkan parallel query. -
Jika parallel query tidak diaktifkan di konsol tetapi
loose_max_parallel_degreediatur di atas 0, kueri paralel single-node diaktifkan secara default.
CatatanParameter
loose_max_parallel_degreemenetapkan jumlah maksimum thread pekerja untuk eksekusi paralel satu kueri. Deskripsi parameter. -
Nonaktifkan
Buka . Pada halaman Basic Information kluster, temukan bagian Database Connection. Pilih titik akhir target dan klik Configure. Di kotak dialog Edit Endpoint Configuration, disable kueri paralel.
Catatan:
-
Menonaktifkan kueri paralel hanya berlaku untuk koneksi baru.
-
Setelah menonaktifkan kueri paralel di konsol, pastikan bahwa
loose_max_parallel_degreejuga diatur ke 0.CatatanParameter
loose_max_parallel_degreemenetapkan jumlah maksimum thread pekerja untuk eksekusi paralel satu kueri. Deskripsi parameter.
Konfigurasi kueri paralel
PolarDB menyediakan beberapa kebijakan kontrol untuk kueri paralel, dirangkum di bawah ini. Daftar lengkap tersedia di Konfigurasi kebijakan kontrol resource paralel.
|
Tipe |
Deskripsi |
|
Ambang batas eksekusi paralel pengoptimal |
PolarDB menyediakan dua ambang batas. Pengoptimal mempertimbangkan rencana paralel ketika kueri melebihi salah satu ambang tersebut.
|
|
Ambang batas penskalaan paralel multi-node |
PolarDB menyediakan dua ambang batas untuk penskalaan paralel multi-node. Sistem melakukan scaling out saat salah satu ambang terlampaui.
|
Kontrol kueri paralel dengan hint
Hint mengontrol eksekusi paralel pada tingkat pernyataan, memungkinkan Anda mengganti perilaku default, mengatur tingkat paralelisme, dan menentukan tabel mana yang akan diparalelkan. Misalnya, gunakan hint untuk mempercepat kueri lambat tertentu. Sintaks lengkap didokumentasikan di Sintaks hint kueri paralel.
Batasan dan masalah kompatibilitas
Batasan
PolarDB memiliki batasan berikut untuk eksekusi paralel:
-
Kueri pada tabel non-
InnoDBtidak dapat dieksekusi secara paralel. -
Kueri yang menggunakan indeks teks penuh tidak dapat dieksekusi secara paralel.
-
Ekspresi yang berisi
Proceduresyang disimpan harus dieksekusi pada node leader. -
Jika tabel dipindai menggunakan
Index Merge, pemindaian tabel tersebut tidak dapat diparalelkan. -
Pernyataan kueri dalam transaksi dengan tingkat isolasi serializable isolation tidak dapat dieksekusi secara paralel.
-
Jika tingkat isolasi adalah
Repeatable-read, bagian kueri dari pernyataanINSERT ... SELECT/REPLACE ... SELECTdalam transaksi tidak dapat dieksekusi secara paralel.
Kompatibilitas
-
Jumlah pesan error dapat berubah
Untuk kueri yang menghasilkan error selama eksekusi sekuensial, jumlah total pesan error dapat berbeda selama eksekusi paralel.
-
Masalah presisi
Eksekusi paralel dapat menyimpan lebih banyak hasil antara floating-point, yang dapat menyebabkan perbedaan presisi kecil pada output akhir.
-
Paket jaringan atau hasil antara melebihi
max_allowed_packetEksekusi paralel dapat menghasilkan hasil antara yang lebih besar. Jika panjang paket jaringan atau hasil antara melebihi
max_allowed_packet, error dapat terjadi. Tingkatkan parametermax_allowed_packetuntuk mengatasi hal ini. Atur parameter kluster dan parameter node. -
Perbedaan urutan set hasil
Pernyataan
SELECT ... LIMIT ntanpa klausaORDER BYdapat mengembalikan baris dalam urutan berbeda selama eksekusi paralel, karena beberapa pekerja selesai dalam kecepatan berbeda. -
Jumlah kunci baris dapat meningkat
Selama eksekusi paralel
SELECT ... FROM ... FOR SHARE, InnoDB mengunci setiap baris yang diakses. Jumlah kunci baris dapat lebih tinggi dibandingkan eksekusi sekuensial.



