全部产品
Search
文档中心

PolarDB:Kolam Thread

更新时间:Nov 14, 2025

Untuk mengoptimalkan kinerja PolarDB for MySQL, PolarDB menyediakan fitur kolam thread. Fitur ini memisahkan thread dari sesi dan menggunakan sekumpulan thread untuk mengeksekusi tugas-tugas di seluruh sesi aktif, alih-alih menetapkan satu thread per sesi.

Manfaat

Secara default, MySQL menggunakan mode eksklusif sesi untuk thread, di mana setiap sesi membuat thread eksklusif. Ketika banyak sesi aktif, terjadi persaingan sumber daya yang signifikan sehingga menurunkan kinerja. Volume tinggi penjadwalan thread dan invalidasi cache juga menyebabkan penurunan tajam dalam kinerja.

Kolam thread PolarDB menerapkan mekanisme prioritas dan kontrol konkurensi untuk berbagai jenis operasi SQL serta menjaga jumlah koneksi mendekati jumlah optimal. Hal ini memungkinkan database PolarDB mempertahankan kinerja tinggi dalam kondisi koneksi dan konkurensi tinggi. Manfaat kolam thread adalah sebagai berikut:

  • Ketika banyak thread berjalan secara konkuren, kolam thread secara otomatis menyesuaikan jumlah thread konkuren ke rentang optimal, sehingga menghindari penjadwalan thread yang berlebihan dan invalidasi cache yang sering terjadi.

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

  • Kolam thread memberikan prioritas lebih tinggi pada pernyataan SQL terkait administrasi agar dieksekusi terlebih dahulu, sehingga memastikan operasi seperti pembuatan koneksi baru, manajemen, dan pemantauan tetap stabil meskipun beban sistem tinggi.

  • Kolam thread memberikan prioritas relatif lebih rendah pada pernyataan SQL yang kompleks dan membatasi konkurensi maksimumnya, sehingga mencegah terlalu banyak pernyataan SQL kompleks menghabiskan sumber daya sistem dan membuat seluruh layanan database tidak tersedia.

Menggunakan kolam thread

Fitur kolam thread melibatkan parameter-parameter berikut. Anda dapat mengubahnya di konsol sesuai kebutuhan. Untuk informasi lebih lanjut, lihat Setel parameter kluster dan node.

Catatan

Parameter kluster di PolarDB console menggunakan awalan loose_ untuk memastikan kompatibilitas dengan file konfigurasi MySQL. Untuk mengubah parameter ini di PolarDB console, pilih parameter dengan awalan loose_.

Parameter

Deskripsi

loose_thread_pool_enabled

Menentukan apakah fitur kolam thread diaktifkan. Nilai yang valid:

  • ON: Mengaktifkan fitur.

  • OFF: Menonaktifkan fitur.

Catatan
  • Nilai default parameter ini bervariasi berdasarkan 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 me-restart kluster untuk mengaktifkan atau menonaktifkan fitur kolam thread.

loose_thread_pool_size

Jumlah grup thread dalam kolam thread. Rentang nilai terkait dengan jumlah core CPU dari node primer dalam kluster.

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

Catatan
  • DBNodeClassCPU adalah jumlah core CPU dari node primer. Nilainya berupa bilangan bulat.

  • Untuk MySQL 5.7, nilai default adalah DBNodeClassCPU.

Contoh:

  • Untuk kluster yang memiliki Database Engine MySQL 8.0.1 dan edisi Cluster Edition, rentang nilainya adalah 4 hingga 40 dan nilai default adalah 8 jika node primer memiliki 4 core dan memori 8 GB.

  • Untuk edisi Multi-master Cluster (Database/Table) dengan Database Engine MySQL 8.0.1, rentang nilainya adalah 8 hingga 80 dan nilai default adalah 16 jika dua node primer memiliki spesifikasi 4 core dan memori 8 GB.

  • Dalam seri Cluster Edition, jika Database Engine adalah MySQL 5.7 dan node primer memiliki 4 core dan memori 8 GB, rentang nilai parameter adalah 4 hingga 40, dan nilai default adalah 4.

loose_thread_pool_high_prio_mode

Mode untuk antrian prioritas tinggi kolam thread. Nilai yang valid:

  • transactions (default): Pernyataan SQL dalam transaksi terbuka ditambahkan ke antrian prioritas tinggi dan diberikan tiket. Jumlah tiket ditentukan oleh parameter thread_pool_high_prio_tickets. Pernyataan SQL berikutnya dalam transaksi tersebut 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

Lingkup:

  • MySQL 5.6

  • MySQL 5.7

loose_thread_pool_high_prio_tickets

Jumlah tiket untuk antrian prioritas tinggi.

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

Catatan

Lingkup:

  • MySQL 5.6

  • MySQL 5.7

loose_thread_pool_idle_timeout

Ambang batas waktu untuk melepas thread idle dalam kolam thread. Thread idle yang tidak melayani permintaan apa pun akan dilepas setelah waktu ini.

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

Catatan

Berlaku untuk:

  • 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, tetapi tidak termasuk thread dalam dua situasi berikut:

  • Pernyataan SQL sedang menunggu I/O disk.

  • Pernyataan SQL sedang menunggu transaksi dikomit.

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

loose_thread_pool_stall_limit

Ambang batas waktu untuk menentukan bahwa kolam thread mengalami stall.

Ketika kolam thread mengalami stall, sistem membuat thread baru untuk melayani pernyataan SQL.

Rentang nilai: 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 klien yang tidak dibatasi oleh kolam thread. Bahkan ketika kolam thread penuh, klien dengan alamat IP ini dapat mengeksekusi pernyataan SQL untuk operasi manajemen.

Contoh:

10.69.96.16,10.69.96.17
Catatan

Versi yang berlaku: 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 klien yang terhubung melalui proxy diabaikan saat memeriksa parameter loose_bypass_thread_pool_ips. Nilai yang valid:

  • ON (default): Untuk alamat IP klien yang terhubung melalui proxy, pembatasan kolam thread tetap berlaku meskipun alamat IP tersebut dikonfigurasi dalam loose_bypass_thread_pool_ips.

  • OFF: Untuk alamat IP klien yang terhubung melalui proxy, pembatasan kolam thread tidak berlaku jika alamat IP tersebut dikonfigurasi dalam loose_bypass_thread_pool_ips.

Catatan

Versi yang berlaku: MySQL 8.0.1 dengan versi revisi 8.0.1.1.19 atau lebih baru.

loose_thread_pool_high_priority_users

Menentukan akun database prioritas tinggi. Setelah dikonfigurasi, permintaan dari akun-akun ini ditempatkan di antrian prioritas tinggi kolam thread dan diproses terlebih dahulu.

Contoh:

user1, user2
Catatan
  • Berlaku untuk:

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

  • Setelah Anda mengonfigurasi parameter ini, efeknya hanya berlaku pada koneksi database baru.

  • Jangan mengonfigurasi terlalu banyak akun prioritas tinggi.

loose_thread_pool_mark_ddl_thread_timeout_sec

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

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

Catatan

Versi yang berlaku: 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 segera ditandai sebagai timeout ketika kolam thread berada di bawah beban tinggi dan antrian prioritas rendah menumpuk. Jika thread DDL ditandai sebagai timeout, sistem membuat thread baru untuk memproses permintaan. Parameter ini cocok untuk skenario bisnis yang memerlukan operasi DDL batch secara sering. Nilai yang valid:

  • ON: Diaktifkan.

  • OFF (default): Menonaktifkan fitur.

Catatan

Versi yang berlaku: MySQL 8.0.1 dengan versi revisi 8.0.1.1.19 atau lebih baru.

Memeriksa status kolam thread

Anda dapat menjalankan perintah berikut untuk memeriksa status kolam thread:

select * from information_schema.THREAD_POOL_STATUS;

Output contoh berikut 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)

Parameter-parameter tersebut dijelaskan sebagai berikut.

Parameter

Deskripsi

ID

ID grup thread.

THREAD_COUNT

Jumlah thread dalam grup thread.

ACTIVE_THREAD_COUNT

Jumlah thread aktif dalam grup thread.

WAITING_THREAD_COUNT

Jumlah thread dalam grup thread yang sedang menunggu I/O disk atau komitmen transaksi.

DUMP_THREAD_COUNT

Jumlah koneksi persisten kelas DUMP dalam grup thread.

SLOW_THREAD_TIMEOUT_COUNT

Jumlah thread dalam grup thread yang ditandai sebagai timeout.

CONNECTION_COUNT

Jumlah koneksi pengguna yang dibuat dalam grup thread.

LOW_QUEUE_COUNT

Jumlah permintaan yang menunggu dalam antrian prioritas rendah grup thread.

HIGH_QUEUE_COUNT

Jumlah permintaan yang menunggu dalam antrian prioritas tinggi grup thread.

Pengujian Sysbench

Bagian ini membandingkan kinerja database dengan fitur kolam thread diaktifkan dan dinonaktifkan. Hasil pengujian menunjukkan bahwa database memberikan kinerja jauh lebih tinggi dalam kondisi konkurensi tinggi ketika fitur kolam thread diaktifkan.

Gambar 1. Pengujian pembaruan OLTP (Online Transactional Processing) pada tabel tanpa indeksOLTP无索引更新

Gambar 2. Pengujian OLTP write-onlyOLTP只写

Gambar 3. Pengujian OLTP read-onlyOLTP只读

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