Menurut dokumen MySQL, Anda harus mengatur thread_cache_size
agar sebagian besar koneksi baru menggunakan utas dari cache daripada utas yang baru dibuat. Ini menghemat beberapa overhead pembuatan thread, meskipun biasanya tidak membuat peningkatan kinerja yang signifikan:
Permintaan utas dipenuhi dengan menggunakan kembali utas yang diambil dari cache jika memungkinkan, dan hanya ketika cache kosong adalah utas baru dibuat. Variabel ini dapat ditingkatkan untuk meningkatkan kinerja jika Anda memiliki banyak koneksi baru. Biasanya, ini tidak memberikan peningkatan kinerja yang menonjol jika Anda memiliki implementasi utas yang baik. Namun, jika server Anda melihat ratusan koneksi per detik, Anda biasanya harus menetapkan thread_cache_size cukup tinggi sehingga sebagian besar koneksi baru menggunakan utas cache . (sumber)
Ini berarti bahwa Anda harus mengatur thread_cache_size
sehingga Threads_created / Connections
(% koneksi yang mengarah ke pembuatan utas baru) agak rendah. Jika Anda menggunakan dokumen MySQL secara literal ("sebagian besar"), nilainya harus <50%. Jawaban RolandoMySQLDBA mengatakan <1%. Saya tidak tahu siapa yang lebih dekat dengan kebenaran.
Anda tidak boleh mengatur thread_cache_size
lebih tinggi dari Max_used_connections
. Kalimat terakhir dalam jawaban RolandoMySQLDBA ("Paling tidak, thread_cache_size harus lebih besar daripada Max_used_connections") tampaknya tidak masuk akal karena dikatakan bahwa Anda harus menyimpan lebih banyak utas di dalam cache daripada yang pernah digunakan oleh server Anda . MySQL tidak akan pernah memasukkan begitu banyak utas ke dalam cache - ia tidak secara pre-emptif memasukkan utas dalam cache - itu hanya menempatkannya di sana setelah klien membuat utas dan terputus. Jika Anda tidak pernah memiliki klien X yang terhubung pada saat yang sama, Anda tidak akan pernah memiliki utas X dalam cache:
Ketika klien terputus, utas klien dimasukkan ke dalam cache jika ada lebih sedikit dari utas thread_cache_size di sana. (sumber)
Lihat juga jawaban ini oleh Michael:
Mengatur thread_cache_size ke nilai yang lebih besar dari max_connections sepertinya saran yang sangat tidak membantu ... cache tidak mungkin tumbuh lebih besar dari max_connections dan bahkan cache di mana saja dekat dengan ukuran itu hanya bisa masuk akal jika Anda memiliki jumlah churn yang luar biasa pada utas Anda ... yang, dalam aplikasi yang berperilaku baik, tidak akan menjadi masalah.
/dba//a/28701