Write by lyc at 2019-11-19

1.thread_cache_size

MySQL服务缓存以重用的线程数:

  • 当客户端断开连接的时候,如果线程缓存没有使用满,则客户端的线程被放入缓存中。
  • 如果有客户端断开连接后再次连接到MySQL服务且线程在缓存中,则MySQL服务会优先使用缓存中的线程;如果线程缓存没有这些线程,则MySQL服务器会创建新的线程。
  • 如果数据库有很多的新连接,可以增加这个参数来提升性能。
  • 如果MySQL服务器每秒有上百个连接,可以增大 thread_cache_size 参数来使MySQL服务器使用缓存的线程。

2.查看线程使用情况

查看线程的全局使用情况

1
2
3
4
5
6
7
8
9
10
mysql> show global status like 'Thread%';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| Threads_cached | 93 | # 已缓存的线程数
| Threads_connected | 259 | # 已经连接的线程数
| Threads_created | 2347 | # 新创建的线程数
| Threads_running | 7 | # 正在执行的线程数,正常要小于等于CPU核数的两倍
+-------------------+-------+
4 rows in set (0.00 sec)

查看当前的thread_cache_size

1
2
3
4
5
6
7
mysql> show variables like 'thread_cache_size';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| thread_cache_size | 205 | # 配置可以缓存205个线程
+-------------------+-------+
1 row in set (0.00 sec)

3.如何配置 thread_cache_size

  1. 检查Threads_created没有太大
  2. Threads_cached不超过thread_cache_size,这边Threads_created=93,没还没到thread_cache_size=205的一半,说明线程缓存这块还是健康的。