All Products
Search
Document Center

PolarDB:Gunakan elastic parallel query (ePQ)

Last Updated:Aug 13, 2026

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 PolarDB console. 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.

Klik untuk melihat langkah-langkah detail

  1. Masuk ke PolarDB console. Di panel navigasi kiri, klik Clusters. Pilih region tempat kluster berada, lalu klik ID kluster untuk membuka halaman detail kluster.

  2. Pada halaman Basic Information kluster, temukan bagian Database Connection. Pilih titik akhir target dan klik Configure.image

  3. Di kotak dialog Edit Endpoint Configuration, enable kueri paralel dan konfigurasi Degree of Parallelism. Parameter titik akhir lainnya didokumentasikan di Konfigurasi proksi database.imageimage

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_degree berlaku 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_degree keduanya dikonfigurasi, pengaturan konsol memiliki prioritas lebih tinggi. Gunakan konsol untuk mengaktifkan parallel query.

    • Jika parallel query tidak diaktifkan di konsol tetapi loose_max_parallel_degree diatur di atas 0, kueri paralel single-node diaktifkan secara default.

    Catatan

    Parameter loose_max_parallel_degree menetapkan jumlah maksimum thread pekerja untuk eksekusi paralel satu kueri. Deskripsi parameter.

Nonaktifkan

Buka PolarDB console. 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.

Klik untuk melihat langkah-langkah detail

  1. Masuk ke PolarDB console. Di panel navigasi kiri, klik Clusters. Pilih region tempat kluster berada, lalu klik ID kluster untuk membuka halaman detail kluster.

  2. Pada halaman Basic Information kluster, temukan bagian Database Connection. Pilih titik akhir target dan klik Configure.image

  3. Di kotak dialog Edit Endpoint Configuration, disable kueri paralel.image

Catatan:

  • Menonaktifkan kueri paralel hanya berlaku untuk koneksi baru.

  • Setelah menonaktifkan kueri paralel di konsol, pastikan bahwa loose_max_parallel_degree juga diatur ke 0.

    Catatan

    Parameter loose_max_parallel_degree menetapkan 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.

  • loose_records_threshold_for_parallelism

    Saat perkiraan jumlah pemindaian tabel melebihi ambang ini, pengoptimal mempertimbangkan rencana paralel. Nilai default: 10000. Untuk set data kecil atau konkurensi kueri rendah, atur ke 2000 atau lebih tinggi.

    Catatan

    Jumlah pemindaian merupakan perkiraan berdasarkan statistik tabel dan mungkin tidak tepat.

  • loose_cost_threshold_for_parallelism

    Saat perkiraan biaya eksekusi sekuensial melebihi ambang ini, pengoptimal mempertimbangkan rencana paralel. Nilai default: 50000.

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.

  • loose_records_threshold_for_mpp

    Ketika estimasi jumlah pemindaian tabel melebihi ambang batas ini, pengoptimal akan meningkatkan skala dari node tunggal ke mode paralel multi-node. By default, this value is N times the value of loose_records_threshold_for_parallelism, where N is the number of nodes within the current cluster endpoint.

  • loose_cost_threshold_for_mpp

    Saat biaya eksekusi sekuensial kueri melebihi ambang ini, pengoptimal melakukan scaling ke paralel multi-node. By default, this value is N times the value of loose_cost_threshold_for_parallelism, where N is the number of nodes within the current cluster endpoint.

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.

Apakah saya dapat menggunakan hint untuk mengaktifkan kueri paralel pada titik akhir utama kluster PolarDB?

Ya, tetapi disarankan menggunakan PolarDB console. Untuk kontrol tingkat pernyataan, gunakan /*+ PARALLEL(n) */ atau /*+ SET_VAR(max_parallel_degree=n) */ untuk mengatur tingkat paralelisme menjadi n. Kedua hint ini berbeda:

  • /*+ PARALLEL(n) */ memaksa eksekusi paralel terlepas dari tipe node atau volume data.

  • /*+ SET_VAR(max_parallel_degree=n) */ mengaktifkan eksekusi paralel hanya jika kueri diarahkan ke node read-only dan perkiraan biaya serta volume oleh pengoptimal membenarkannya.

Apakah ada konflik antara parameter paralel yang diatur oleh hint dalam pernyataan SQL dan pengaturan di konsol?

Tidak. Parameter hint hanya berlaku untuk pernyataan saat ini dan menggantikan pengaturan global di konsol.

Batasan dan masalah kompatibilitas

Batasan

PolarDB memiliki batasan berikut untuk eksekusi paralel:

  • Kueri pada tabel non-InnoDB tidak dapat dieksekusi secara paralel.

  • Kueri yang menggunakan indeks teks penuh tidak dapat dieksekusi secara paralel.

  • Ekspresi yang berisi Procedures yang 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 pernyataan INSERT ... SELECT/REPLACE ... SELECT dalam 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_packet

    Eksekusi paralel dapat menghasilkan hasil antara yang lebih besar. Jika panjang paket jaringan atau hasil antara melebihi max_allowed_packet, error dapat terjadi. Tingkatkan parameter max_allowed_packet untuk mengatasi hal ini. Atur parameter kluster dan parameter node.

  • Perbedaan urutan set hasil

    Pernyataan SELECT ... LIMIT n tanpa klausa ORDER BY dapat 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.

FAQ

Setelah saya mengaktifkan kueri paralel, apakah semua kueri akan dipercepat secara paralel?

Tidak semua kueri dijalankan secara paralel. Kasus-kasus berikut akan kembali ke eksekusi sekuensial:

  • Tipe kueri tidak didukung. Batasan.

  • Volume pemindaian atau biaya kueri berada di bawah ambang yang ditetapkan oleh loose_records_threshold_for_parallelism dan loose_cost_threshold_for_parallelism.

  • Beban resource kluster terlalu tinggi. Kebijakan kontrol resource sistem.

Setelah saya mengaktifkan kueri paralel, mengapa sintaks hint tidak berlaku?

Periksa hal berikut:

  • Perubahan kueri paralel hanya berlaku pada koneksi baru. Lakukan koneksi ulang ke kluster.

  • Kueri paralel secara default dinonaktifkan pada node RW. Gunakan titik akhir kluster, bukan titik akhir utama. Konfigurasi kebijakan kontrol resource paralel.