Untuk memaksimalkan kinerja ApsaraDB for RDS, Alibaba Cloud menyediakan kolam thread. Fitur ini memisahkan thread dari sesi sehingga sejumlah kecil thread dapat menangani tugas untuk banyak sesi aktif.
Manfaat
Model koneksi MySQL bawaan menggunakan pendekatan one-thread-per-session. Ketika banyak sesi terhubung, model ini dapat menyebabkan konflik sumber daya yang signifikan. Overhead dari penjadwalan thread sistem dan invalidasi cache yang sering terjadi dapat mengakibatkan penurunan kinerja yang tajam.
Kolam thread pada ApsaraDB for RDS menerapkan mekanisme prioritas dan kontrol konkurensi untuk berbagai jenis operasi SQL. Kolam ini menjaga jumlah thread konkuren pada tingkat optimal, sehingga memastikan kinerja tinggi bahkan di bawah beban kerja dengan tingkat konkurensi tinggi. Manfaat utama kolam thread meliputi:
- Pada kondisi konkurensi tinggi, kolam thread menjaga jumlah thread aktif dalam rentang optimal, sehingga mengurangi penjadwalan thread berlebihan dan invalidasi cache.
- Untuk transaksi konkuren, kolam thread mengurangi konflik sumber daya dengan memberikan prioritas berbeda pada pernyataan SQL dan transaksi serta mengontrol tingkat konkurensinya.
- Kolam thread memberikan prioritas lebih tinggi pada pernyataan SQL administratif, sehingga memastikan operasi seperti pembuatan koneksi baru, management, dan monitoring tetap andal meskipun sistem mengalami beban tinggi.
- Kolam thread memberikan prioritas lebih rendah pada pernyataan SQL yang kompleks dan menerapkan batas maksimum konkurensi, sehingga mencegah terlalu banyak pernyataan SQL kompleks menghabiskan sumber daya sistem hingga membuat layanan database tidak tersedia.
Prasyarat
Instans RDS Anda harus menjalankan MySQL 5.6, 5.7, 8.0, atau 8.4.
Parameter kolam thread
Anda dapat mengonfigurasi kolam thread menggunakan tiga parameter berikut di Konsol. Untuk informasi selengkapnya, lihat Konfigurasi parameter instans.
| Parameter | Deskripsi |
| loose_thread_pool_enabled | Menentukan apakah fitur kolam thread diaktifkan. Nilai yang valid:
Nilai default: ON. Catatan
|
| loose_thread_pool_size | Jumlah grup thread. Nilai default: 4. Thread dalam kolam didistribusikan secara merata ke dalam grup-grup ini untuk dikelola. |
| loose_thread_pool_oversubscribe | Jumlah thread aktif yang diizinkan dalam setiap grup thread. Nilai default: 32. Thread aktif adalah thread yang sedang mengeksekusi pernyataan SQL, tidak termasuk kasus-kasus berikut:
|
Status kolam thread
show status like "thread_pool%";Contoh:
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)
Tabel berikut menjelaskan variabel status tersebut.
| Parameter | Deskripsi |
| thread_pool_active_threads | Jumlah thread aktif dalam kolam thread. |
| thread_pool_big_threads | Jumlah thread dalam kolam thread yang sedang mengeksekusi kueri kompleks. Kueri kompleks mencakup kueri yang memiliki subkueri, fungsi agregat, atau klausa seperti GROUP BY dan LIMIT. |
| thread_pool_dml_threads | Jumlah thread dalam kolam thread yang sedang mengeksekusi pernyataan DML. |
| thread_pool_idle_threads | Jumlah thread menganggur dalam kolam thread. |
| thread_pool_qry_threads | Jumlah thread dalam kolam thread yang sedang mengeksekusi kueri simple. |
| thread_pool_total_threads | Total jumlah thread dalam kolam thread. |
| thread_pool_trx_threads | Jumlah thread dalam kolam thread yang sedang mengeksekusi transaksi. |
| thread_pool_wait_threads | Jumlah thread dalam kolam thread yang sedang menunggu I/O disk atau menunggu transaksi dikomit. |
Uji SysBench
Gambar-gambar berikut menunjukkan perbandingan kinerja antara skenario dengan kolam thread diaktifkan dan dinonaktifkan. Hasil pengujian menunjukkan bahwa kolam thread memberikan keunggulan kinerja signifikan pada beban kerja dengan tingkat konkurensi tinggi.



