All Products
Search
Document Center

PolarDB:Thread Pool

Last Updated:Apr 21, 2026

Untuk mencapai performa optimal pada PolarDB for MySQL, PolarDB menyediakan fitur thread pool. Fitur ini memisahkan thread dari sesi sehingga sejumlah kecil thread dapat menangani tugas dari banyak sesi aktif.

Manfaat

Secara default, MySQL menggunakan mode eksklusif sesi, di mana setiap sesi membuat thread khusus. Ketika terdapat banyak sesi, terjadi persaingan sumber daya yang signifikan dan menurunkan performa. Penjadwalan thread berlebihan serta cache miss yang sering juga secara drastis mengurangi performa.

Thread pool pada PolarDB menerapkan mekanisme prioritas dan kontrol konkurensi untuk berbagai jenis operasi SQL. Fitur ini menjaga jumlah koneksi mendekati tingkat optimal, memastikan database PolarDB memberikan performa tinggi dalam kondisi koneksi dan konkurensi tinggi. Manfaat thread pool meliputi hal-hal berikut:

  • Ketika banyak thread berjalan secara konkuren, thread pool secara otomatis menyesuaikan jumlah thread konkuren ke rentang yang wajar, sehingga menghindari penjadwalan thread berlebihan dan cache miss yang sering.

  • Ketika banyak transaksi berjalan secara konkuren, thread pool memberikan tingkat prioritas berbeda pada pernyataan dan transaksi, serta mengontrol konkurensinya secara terpisah untuk mengurangi persaingan sumber daya.

  • Thread pool memberikan prioritas lebih tinggi pada pernyataan SQL terkait administrasi agar dieksekusi terlebih dahulu, sehingga operasi seperti pembuatan koneksi baru, administrasi, dan pemantauan tetap stabil meskipun sistem sedang mengalami beban tinggi.

  • Thread pool memberikan prioritas lebih rendah pada pernyataan SQL yang kompleks dan membatasi jumlah maksimum eksekusi konkurennya, sehingga mencegah pernyataan tersebut menghabiskan sumber daya sistem dan menyebabkan seluruh layanan database menjadi tidak tersedia.

Menggunakan thread pool

Thread pool melibatkan parameter-parameter berikut. Anda dapat mengubahnya di Konsol. Untuk informasi lebih lanjut, lihat Setel parameter kluster dan node.

Catatan

Semua parameter kluster di PolarDB console diberi awalan loose_ untuk kompatibilitas dengan file konfigurasi MySQL. Untuk mengubah parameter di PolarDB console, pilih parameter yang memiliki awalan loose_.

Nama Parameter

Deskripsi

loose_thread_pool_enabled

Menentukan apakah fitur thread pool diaktifkan. Nilai yang valid:

  • ON: Mengaktifkan fitur.

  • OFF: Menonaktifkan fitur.

Catatan
  • Nilai default parameter ini bervariasi tergantung versi.

    • MySQL 5.6: Nilai default adalah OFF.

    • MySQL 5.7, MySQL 8.0.1, dan MySQL 8.0.2: Nilai default adalah ON.

  • Anda tidak perlu melakukan restart kluster untuk mengaktifkan atau menonaktifkan fitur thread pool.

loose_thread_pool_size

Jumlah grup thread dalam thread pool. Rentang nilai yang valid bergantung pada jumlah core CPU pada node primary di kluster.

Rentang valid: DBNodeClassCPU hingga DBNodeClassCPU × 10. Nilai default: DBNodeClassCPU × 2.

Catatan
  • DBNodeClassCPU adalah jumlah core CPU pada node primary. Nilainya berupa bilangan bulat.

  • Untuk MySQL 5.7, nilai default adalah DBNodeClassCPU.

Contoh:

  • Untuk kluster Cluster Edition yang menjalankan database engine MySQL 8.0.1, jika node primary memiliki 4 core dan memori 8 GB, rentang valid adalah 4 hingga 40 dan nilai default adalah 8.

  • Untuk kluster Multi-master Cluster (Database/Table) yang menjalankan database engine MySQL 8.0.1, jika kedua node primary masing-masing memiliki 4 core dan memori 8 GB, rentang valid adalah 8 hingga 80 dan nilai default adalah 16.

  • Untuk kluster Cluster Edition yang menjalankan database engine MySQL 5.7, jika node primary memiliki 4 core dan memori 8 GB, rentang valid adalah 4 hingga 40 dan nilai default adalah 4.

loose_thread_pool_high_prio_mode

Mode untuk antrian prioritas tinggi dalam thread pool. Nilai yang valid:

  • transactions (default): Pernyataan SQL dalam transaksi aktif ditambahkan ke antrian prioritas tinggi. Mereka diberikan sejumlah tiket yang ditentukan oleh thread_pool_high_prio_tickets. Pernyataan SQL berikutnya ditempatkan di antrian prioritas tinggi hingga tiket habis.

  • statements: Semua pernyataan SQL ditambahkan ke antrian prioritas tinggi.

  • none: Tidak ada pernyataan SQL yang ditambahkan ke antrian prioritas tinggi.

Catatan

Cakupan penerapan:

  • MySQL 5.6

  • MySQL 5.7

loose_thread_pool_high_prio_tickets

Jumlah tiket untuk satu entri ke antrian prioritas tinggi.

Rentang valid: 0 hingga 4294967295. Nilai default: 4294967295.

Catatan

Cakupan penerapan:

  • MySQL 5.6

  • MySQL 5.7

loose_thread_pool_idle_timeout

Periode timeout untuk melepaskan thread idle dalam thread pool. Thread idle yang tidak melayani permintaan apa pun dalam periode ini akan dilepaskan.

Rentang valid: 0 hingga 31536000. Nilai default: 60. Satuan: detik.

Catatan

Cakupan penerapan:

  • MySQL 5.6

  • MySQL 5.7

loose_thread_pool_oversubscribe

Jumlah thread aktif yang diizinkan dalam setiap grup thread. Thread aktif adalah thread yang sedang mengeksekusi pernyataan SQL.

Rentang valid: 1 hingga 1000. Nilai default: 20.

loose_thread_pool_stall_limit

Ambang batas waktu untuk menentukan apakah thread pool berada dalam kondisi stall.

Ketika thread pool memasuki kondisi stall, sistem membuat thread baru untuk melayani pernyataan SQL.

Rentang valid: 1 hingga 18446744073709551615. Nilai default: 10. Satuan: milidetik.

Catatan

Untuk MySQL 5.6, nilai default adalah 30 milidetik.

loose_bypass_thread_pool_ips

Menentukan alamat IP client yang tidak dibatasi oleh thread pool. Hal ini memungkinkan Anda mengeksekusi pernyataan SQL untuk operasi administratif bahkan ketika thread pool penuh.

Contoh konfigurasi:

10.69.96.16,10.69.96.17
Catatan

Cakupan penerapan: MySQL 8.0.1 dengan versi revisi 8.0.1.1.19 atau lebih baru.

loose_bypass_thread_pool_check_ignore_proxy

Menentukan apakah alamat IP client yang terhubung melalui proxy diabaikan saat memeriksa terhadap loose_bypass_thread_pool_ips. Nilai yang valid:

  • ON (default): Untuk client yang terhubung melalui proxy, mereka tetap tunduk pada batasan thread pool meskipun alamat IP-nya dikonfigurasi dalam loose_bypass_thread_pool_ips.

  • OFF: Untuk client yang terhubung melalui proxy, mereka tidak tunduk pada batasan thread pool jika alamat IP-nya dikonfigurasi dalam loose_bypass_thread_pool_ips.

Catatan

Cakupan penerapan: MySQL 8.0.1 dengan versi revisi 8.0.1.1.19 atau lebih baru.

loose_thread_pool_high_priority_users

Menentukan akun database berprioritas tinggi. Setelah dikonfigurasi, permintaan dari akun-akun ini ditempatkan di antrian prioritas tinggi thread pool untuk diproses secara prioritas.

Contoh konfigurasi:

user1, user2
Catatan
  • Cakupan penerapan:

    • MySQL 8.0.1 dengan versi revisi 8.0.1.1.19 atau lebih baru.

    • MySQL 8.0.2 dengan versi revisi 8.0.2.2.12 atau lebih baru.

  • Parameter ini hanya berlaku untuk koneksi database baru.

  • Jangan mengonfigurasi terlalu banyak akun berprioritas tinggi.

loose_thread_pool_mark_ddl_thread_timeout_sec

Menentukan ambang batas timeout untuk thread DDL dalam thread pool. Setelah waktu ini berlalu, thread DDL ditandai sebagai timeout, dan sistem membuat thread baru untuk memproses permintaan.

Rentang valid: 0 hingga 864000. Nilai default: 600. Satuan: detik.

Catatan

Cakupan penerapan: MySQL 8.0.1 dengan versi revisi 8.0.1.1.19 atau lebih baru.

loose_thread_pool_mark_ddl_thread_timeout_immediately

Menentukan apakah thread DDL langsung ditandai sebagai timeout ketika thread pool mengalami beban tinggi dan antrian prioritas rendah menumpuk. Ketika hal ini terjadi, sistem membuat thread baru untuk memproses permintaan. Parameter ini cocok untuk skenario bisnis yang memerlukan operasi DDL batch secara sering. Nilai yang valid:

  • ON: Mengaktifkan fitur.

  • OFF (default): Menonaktifkan fitur.

Catatan

Cakupan penerapan: MySQL 8.0.1 dengan versi revisi 8.0.1.1.19 atau lebih baru.

Memeriksa status thread pool

Anda dapat menjalankan perintah berikut untuk memeriksa status thread pool:

select * from information_schema.THREAD_POOL_STATUS;

Contoh berikut menunjukkan hasil yang dikembalikan.

mysql> select * from information_schema.THREAD_POOL_STATUS;
+----+--------------+---------------------+----------------------+-------------------+---------------------------+------------------+-----------------+------------------+
| ID | THREAD_COUNT | ACTIVE_THREAD_COUNT | WAITING_THREAD_COUNT | DUMP_THREAD_COUNT | SLOW_THREAD_TIMEOUT_COUNT | CONNECTION_COUNT | LOW_QUEUE_COUNT | HIGH_QUEUE_COUNT |
+----+--------------+---------------------+----------------------+-------------------+---------------------------+------------------+-----------------+------------------+
|  0 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
|  1 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
|  2 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
|  3 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
|  4 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
|  5 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
|  6 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
|  7 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
|  8 |            1 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
|  9 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 10 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 11 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 12 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 13 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 14 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 15 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 16 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 17 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 18 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 19 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 20 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 21 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 22 |            2 |                   1 |                    0 |                 0 |                         0 |                1 |               0 |                0 |
| 23 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 24 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 25 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 26 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 27 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 28 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 29 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 30 |            2 |                   0 |                    0 |                 0 |                         0 |                1 |               0 |                0 |
| 31 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 32 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 33 |            2 |                   0 |                    0 |                 0 |                         0 |                1 |               0 |                0 |
| 34 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 35 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 36 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 37 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 38 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 39 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 40 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 41 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 42 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 43 |            1 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 44 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 45 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 46 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 47 |            3 |                   1 |                    0 |                 0 |                         0 |                1 |               0 |                0 |
| 48 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 49 |            3 |                   1 |                    0 |                 0 |                         0 |                1 |               0 |                0 |
| 50 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 51 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 52 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 53 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 54 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 55 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 56 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 57 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 58 |            1 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 59 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 60 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 61 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 62 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
| 63 |            2 |                   0 |                    0 |                 0 |                         0 |                0 |               0 |                0 |
+----+--------------+---------------------+----------------------+-------------------+---------------------------+------------------+-----------------+------------------+
64 rows in set (0.00 sec)

Deskripsi metrik sebagai berikut.

Parameter

Deskripsi

ID

ID thread pool.

THREAD_COUNT

Jumlah thread dalam thread pool.

ACTIVE_THREAD_COUNT

Jumlah thread aktif dalam thread pool.

WAITING_THREAD_COUNT

Jumlah thread dalam thread pool yang sedang menunggu I/O disk atau commit transaksi.

DUMP_THREAD_COUNT

Jumlah koneksi persisten kelas DUMP dalam thread pool.

SLOW_THREAD_TIMEOUT_COUNT

Jumlah thread dalam thread pool yang ditandai sebagai timeout.

CONNECTION_COUNT

Jumlah koneksi pengguna yang telah terbentuk dalam thread pool.

LOW_QUEUE_COUNT

Jumlah permintaan yang menunggu dalam antrian prioritas rendah thread pool.

HIGH_QUEUE_COUNT

Jumlah permintaan yang menunggu dalam antrian prioritas tinggi thread pool.

Pengujian Sysbench

Gambar berikut membandingkan performa dengan dan tanpa thread pool diaktifkan. Hasil pengujian menunjukkan bahwa thread pool memberikan keunggulan performa signifikan dalam skenario konkurensi tinggi.

Gambar 1. Pengujian OLTP untuk update tanpa indeksOLTP无索引更新

Gambar 2. Pengujian OLTP write-onlyOLTP只写

Gambar 3. Pengujian OLTP read-onlyOLTP只读

Gambar 4. Pengujian OLTP read/writeOLTP读写测试