全局,动态,默认值-1表示自动调整大小,公式:8 + (max_connections / 100)。
最小值0,最大值16384,查看当前:
MySQL [(none)]> show variables like 'thread_cach%';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| thread_cache_size | 64 |
+-------------------+-------+
在经常创建新的连接的情况下,提高该值可提高mysql性能,因为减少了连接的分配,但使用了java的连接池等,性能提升没那么显著。如果每秒有上百的连接,需要将该值设置足够高。
#尝试连接次数,无论是否成功连接
MySQL [(none)]> show global status like 'connections';
+---------------+-----------+
| Variable_name | Value |
+---------------+-----------+
| Connections | 177312707 |
+---------------+-----------+
1 row in set (0.00 sec)
MySQL [(none)]> show global status like 'thread%';
+-------------------+--------+
| Variable_name | Value |
+-------------------+--------+
| Threads_cached | 49 | #线程缓存中的空闲线程数
| Threads_connected | 416 | #当前打开的连接数
| Threads_created | 208872 | #创建连接的线程数,如果很大,需要添加thread_cache_size大小
| Threads_running | 5 | #当前未休眠的连接
+-------------------+--------+
通过检查Connections和Threads_created状态变量之间的差异,您可以看到线程缓存的效率,越小越好
MySQL [(none)]> select 208872/177312707;
+------------------+
| 208872/177312707 |
+------------------+
| 0.0012 |
+------------------+