All Products
Search
Document Center

PolarDB:Gunakan elastic parallel query (ePQ)

Last Updated:Jun 03, 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

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

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 yang dituju lalu klik Configure.image

  3. Di kotak dialog Edit Endpoint Configuration, enable parallel query dan konfigurasi Degree of Parallelism. Parameter Titik akhir lainnya didokumentasikan di Konfigurasi database proxy.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 CPU meningkat.

  • Mengaktifkan parallel query 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 parameter 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 parameter loose_max_parallel_degree diatur di atas 0, parallel query 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 yang dituju lalu klik Configure. Di kotak dialog Edit Endpoint Configuration, disable parallel query.

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 yang dituju lalu klik Configure.image

  3. Di kotak dialog Edit Endpoint Configuration, disable parallel query.image

Catatan:

  • Menonaktifkan parallel query hanya berlaku untuk koneksi baru.

  • Setelah menonaktifkan parallel query di Konsol, pastikan parameter 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.

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.

  • loose_records_threshold_for_parallelism

    Ketika 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

    Ketika 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 ketika salah satu ambang terlampaui.

  • loose_records_threshold_for_mpp

    Ketika estimasi jumlah pemindaian sebuah tabel melebihi ambang batas ini, pengoptimal beralih 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

    Ketika biaya eksekusi sekuensial kueri melebihi ambang batas ini, pengoptimal akan melakukan penskalaan 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 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.

Apakah saya dapat menggunakan hint untuk mengaktifkan parallel query 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 tanpa mempertimbangkan jenis 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 tersimpan 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 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 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.

FAQ

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

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

  • Jenis 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 parallel query, mengapa sintaks hint tidak berlaku?

Periksa hal berikut:

  • Perubahan parallel query hanya berlaku pada koneksi baru. Lakukan koneksi ulang ke kluster.

  • Parallel query dinonaktifkan secara default pada node RW. Gunakan Titik akhir kluster, bukan Titik akhir utama. Konfigurasi kebijakan kontrol resource paralel.