All Products
Search
Document Center

ApsaraDB RDS:Thread Pool

Last Updated:Mar 29, 2026

Secara default, MySQL membuat satu thread khusus per sesi. Dalam kondisi konkurensi tinggi, hal ini menyebabkan overhead penjadwalan thread yang berlebihan dan invalidasi cache yang sering terjadi, sehingga menurunkan performa. Fitur Thread Pool memisahkan thread dari sesi sehingga beberapa sesi dapat berbagi kolam thread yang lebih kecil, menjaga overhead penjadwalan tetap rendah dan tingkat hit cache tetap tinggi. Fitur ini bekerja paling optimal untuk beban kerja OLTP dengan query singkat yang dibatasi oleh CPU serta jumlah koneksi bersamaan yang tinggi.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

  • Sebuah instans RDS yang menjalankan MySQL 5.6, 5.7, atau 8.0

Cara kerja

Kolam thread mengatasi bottleneck satu-thread-per-sesi melalui dua mekanisme:

  • Penjadwalan berbasis prioritas: Pernyataan SQL untuk manajemen data (penyiapan koneksi, pemantauan, perintah administratif) mendapatkan prioritas tinggi dan dijalankan sebelum query dengan prioritas lebih rendah. Query kompleks—yang mencakup subquery, fungsi agregat, atau klausa GROUP BY dan LIMIT—mendapatkan prioritas rendah sehingga tidak menghambat beban kerja lainnya.

  • Kontrol konkurensi: Thread dibagi ke dalam kelompok. Setiap kelompok membatasi jumlah thread aktif secara simultan, sehingga menjaga overhead penjadwalan dalam batas yang dapat dikelola dan mempertahankan efektivitas cache.

Kedua mekanisme ini secara bersama menjaga stabilitas database saat terjadi lonjakan koneksi bersamaan.

Konfigurasi thread pool

Konfigurasikan parameter thread pool di Konsol ApsaraDB for RDS. Untuk detail selengkapnya, lihat Modify the parameters of an ApsaraDB RDS for MySQL instance.

ParameterDefaultDescription
thread_pool_enabledONMengaktifkan atau menonaktifkan thread pool. Nilai yang valid: ON, OFF. Parameter thread_handling yang sudah tidak digunakan lagi tidak memiliki efek apa pun. Mengaktifkan atau menonaktifkan parameter ini tidak memerlukan restart instans.
thread_pool_size4Jumlah grup thread. Thread dalam kolam thread dibagi rata ke dalam grup dan dikelola berdasarkan grup tersebut.
thread_pool_oversubscribe32Jumlah maksimum thread aktif per grup. Sebuah thread dianggap aktif selama mengeksekusi pernyataan SQL. Thread yang sedang menunggu I/O disk atau commit transaksi dianggap tidak aktif dan tidak dihitung terhadap batas ini.

Pantau aktivitas thread pool

Jalankan perintah berikut untuk memeriksa status saat ini dari thread pool:

SHOW STATUS LIKE 'thread_pool%';

Contoh output:

mysql> SHOW STATUS LIKE 'thread_pool%';
+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| thread_pool_active_threads | 1     |
| thread_pool_big_threads    | 0     |
| thread_pool_dml_threads    | 0     |
| thread_pool_idle_threads   | 19    |
| thread_pool_qry_threads    | 0     |
| thread_pool_total_threads  | 20    |
| thread_pool_trx_threads    | 0     |
| thread_pool_wait_threads   | 0     |
+----------------------------+-------+
8 rows in set (0.00 sec)
Variabel statusDescription
thread_pool_active_threadsThread yang sedang mengeksekusi pernyataan SQL.
thread_pool_big_threadsThread yang mengeksekusi pernyataan SQL kompleks (yang mencakup subquery, fungsi agregat, atau klausa GROUP BY dan LIMIT).
thread_pool_dml_threadsThread yang mengeksekusi pernyataan bahasa manipulasi data (DML).
thread_pool_idle_threadsThread yang tidak memiliki tugas yang ditugaskan.
thread_pool_qry_threadsThread yang mengeksekusi pernyataan SQL sederhana.
thread_pool_total_threadsTotal thread dalam kolam.
thread_pool_trx_threadsThread yang mengeksekusi transaksi.
thread_pool_wait_threadsThread yang menunggu I/O disk atau menunggu transaksi untuk di-commit.

Benchmark performa

Hasil pengujian SysBench berikut menunjukkan throughput dengan thread pool diaktifkan dibandingkan dinonaktifkan pada berbagai skenario sesi bersamaan. Thread pool secara konsisten memberikan throughput yang lebih tinggi seiring meningkatnya jumlah sesi bersamaan.