Pelajari cara mengaktifkan, mengonfigurasi, dan mengontrol ePQ untuk PolarDB for MySQL, termasuk ambang batas eksekusi paralel, sintaks hint, dan batasan yang diketahui.
Sebelum memulai
-
Konfirmasi bahwa kluster Anda mendukung elastic parallel query.
-
Elastic parallel query single-node:
-
Database engine: 8.0.1 dengan versi revisi 8.0.1.0.5 atau lebih baru.
-
Edisi database: Enterprise Edition.
-
-
Query Paralel Elastis Node Tunggal:
-
Database engine: 8.0.2 dengan versi revisi 8.0.2.1.4.1 atau lebih baru.
-
Edisi database: Enterprise Edition.
-
-
Elastic parallel query multi-node:
-
Database engine: 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 parallel query.
-
Node read-only dan RW sama-sama mendukung parallel query, 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 yang dituju lalu klik Configure. Di kotak dialog Edit Endpoint Configuration, enable parallel query 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 CPU meningkat.
-
Mengaktifkan parallel query 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 parameter
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 parameter
loose_max_parallel_degreediatur di atas 0, parallel query 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 yang dituju lalu klik Configure. Di kotak dialog Edit Endpoint Configuration, disable parallel query.
Catatan:
-
Menonaktifkan parallel query hanya berlaku untuk koneksi baru.
-
Setelah menonaktifkan parallel query di Konsol, pastikan parameter
loose_max_parallel_degreejuga diatur ke 0.CatatanParameter
loose_max_parallel_degreemenetapkan jumlah maksimum thread pekerja untuk eksekusi paralel satu kueri. Deskripsi parameter.
Mengonfigurasi kueri paralel
PolarDB menyediakan beberapa kebijakan kontrol untuk parallel query, dirangkum di bawah ini. Daftar lengkap tersedia di Konfigurasi kebijakan kontrol resource paralel.
|
Jenis |
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 ketika salah satu ambang terlampaui.
|
Kontrol parallel query 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 parallel query.
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
Procedurestersimpan harus dieksekusi pada node leader. -
Jika tabel dipindai menggunakan
Index Merge, pemindaian tabel tersebut tidak dapat diparalelkan. -
Pernyataan kueri dalam transaksi dengan tingkat isolasi yang dapat diserialkan 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 worker 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.



