2-MySQL 配置参数之 thread cache

MySQL里面为了提高客户端请求创建连接过程的性能,提供了一个连接池也就是 Thread_Cache 池,将空闲的连接线程放在连接池中,而不是立即销毁.这样的好处就是,当又有一个新的请求的时候,mysql不会立即去创建连接 线程,而是先去 Thread_Cache 中去查找空闲的连接线程,如果存在则直接使用,不存在才创建新的连接线程.

有关Thread_Cache在MySQL有几个重要的参数,简单介绍如下:

  • thread_cache_size :Thread_Cache 中存放的最大连接线程数.在短连接的应用中 Thread_Cache 的功效非常明显,因为在应用中数据库的连接和创建是非常频繁的,如果不使用 Thread_Cache 那么消耗的资源是非常可观的!
    在长连接中虽然带来的改善没有短连接的那么明显,但是好处是显而易见的.但并不是越大越好大了反而 浪费资源这个的确定一般认为和物理内存有一定关系,如下: 如果短连接多的话可以适当加大.

    • 1G —> 8
    • 2G —> 16
    • 4G —> 32
    • 8G —> 64
  • thread_stack: 每个连接被创建的时候,mysql分配给它的内存.这个值一般认为默认就可以应用于大部分场景了,除非必要非则不要动它.

  • thread_handing: 运用Thread_Cache 处理连接的方式,5.1.19添加的新特性.有两个值可选[no-threads|one-thread-per-connection] 看字面意思大家也该猜出八九分了,no-threads 服务器使用一个线程,one-thread-per-connection 服务器为每个客户端请求使用一个线程.原手册中提到,no-threads是在Linux下调试用的.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
mysql> show variables like 'thread%';
+——————-------+—————————---------+
| Variable_name | Value |
+——————-------+—————————---------+
| thread_cache_size | 32 | # 池中最多可以存放32个连接线程
| thread_handling | one-thread-per-connection | # 为每个客户端球使用一个线程
| thread_stack | 196608 | # 为每个连接的线程分配192k的内存空间
+——————-------+—————————---------+
3 rows in set (0.01 sec)


mysql> show status like '%connections%';
+——————---------+——----+
| Variable_name | Value |
+———————--------+——----+
| Connections | 199156 | # 服务器总共有199156次连接
| Max_used_connections | 31 | # 最大并发连接数为31
+———————--------+——----+
2 rows in set (0.00 sec)


mysql> show status like '%thread%';
+————————---------+——----+
| Variable_name | Value |
+————————---------+——----+
| Delayed_insert_threads | 0 |
| Slow_launch_threads | 0 |
| Threads_cached | 3 | # 当前在thread_cashe池中的连接数为3个
| Threads_connected | 6 | # 连接数为6个
| Threads_created | 8689 | # 共创建 了8689次连接
| Threads_running | 5 | # 处于活跃状态的有5个
+————————---------+——----+
6 rows in set (0.00 sec)

thread_cache 命中率公式为Thread_Cache_Hit=(Connections-Thread_created)/Connections\*100%

当前服务器的Thread_cache命中率约为95.6%


2-MySQL 配置参数之 thread cache
https://flepeng.github.io/041-MySQL-11-安装和配置-2-MySQL-配置参数之-thread-cache/
作者
Lepeng
发布于
2021年3月6日
许可协议