https://dev.mysql.com/doc/refman/8.0/en/connection-interfaces.htmlhttps://www.cndba.cn/hbhe0316/article/22626
系统变量thread_cache_size决定了线程缓存的大小。默认情况下,服务器在启动时自动设置该值,但可以显式设置该值以覆盖此默认值。值为0禁用缓存,这将导致为每个新连接设置一个线程,并在连接终止时处理该线程。要缓存N个非活动的连接线程,可以在服务器启动或运行时将thread_cache_size设置为N。当与连接线程相关联的客户端连接终止时,连接线程将变为不活动状态。
要监视缓存中的线程数量以及由于无法从缓存中获取线程而创建的线程数量,请检查Threads_cached和Threads_created状态变量。
当线程堆栈太小时,这会限制服务器可以处理的SQL语句的复杂性、存储过程的递归深度和其他消耗内存的操作。要为每个线程设置N字节的堆栈大小,启动服务器时将thread_stack设置为N。https://www.cndba.cn/hbhe0316/article/22626
服务器应该缓存多少线程以供重用。当客户端断开连接时,如果该客户端的线程少于thread_cache_size线程,那么该客户端的线程将被放入缓存中。如果可能的话,通过重用从缓存中获取的线程来满足对线程的请求,只有当缓存为空时,才会创建一个新线程。如果有很多新连接,可以增加这个变量以提高性能。通常,如果您有一个好的线程实现,这不会提供显著的性能改进。然而,如果您的服务器每秒看到数百个连接,您通常应该将thread_cache_size设置得足够高,以便大多数新连接使用缓存线程。通过检查Connections和Threads_created状态变量之间的差异,您可以看到线程缓存的效率
8 + (max_connections / 100)
如果是短连接,适当设置大一点,因为短连接往往需要不停创建,不停销毁,如果大一点,连接线程都处于取用状态,不需要重新创建和销毁,所以对性能肯定是比较大的提升。
对于长连接,不能保证连接的稳定性,所以设置这参数还是有一定必要,可能连接池的问题,会导致连接数据库的不稳定性,也会出现频繁的创建和销毁,但这个情况比较少,如果是长连接,可以设置成小一点,一般在50-100左右。https://www.cndba.cn/hbhe0316/article/22626
https://www.cndba.cn/hbhe0316/article/22626https://www.cndba.cn/hbhe0316/article/22626
1.设置thread_cache_size,修改/etc/my.cnf文件https://www.cndba.cn/hbhe0316/article/22626https://www.cndba.cn/hbhe0316/article/22626https://www.cndba.cn/hbhe0316/article/22626
[root@mysql57 ~]# cat /etc/my.cnf | grep -i thread_cache_size
thread_cache_size = 100
[root@mysql57 ~]# service mysqld restart
Shutting down MySQL.... SUCCESS!
Starting MySQL.. SUCCESS!
mysql> show variables like "thread_cache_size";
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| thread_cache_size | 100 |
+-------------------+-------+
1 row in set (0.00 sec)
版权声明:本文为博主原创文章,未经博主允许不得转载。
MYSQL