MySQL参数优化之thread_cache_size

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL参数优化之thread_cache_size相关的知识,希望对你有一定的参考价值。

1.thread_cache_size简介

每建立一个连接,都需要一个线程来与之匹配,此参数用来缓存空闲的线程,以至不被销毁,如果线程缓存中有空闲线程,这时候如果建立新连接,mysql就会很快的响应连接请求。

show status like  Threads%;
show global status like Thread%;

可以看到

Threads_cached  68
Threads_connected 310
Threads_created 378
Threads_running 8
  • Threads_cached :代表当前此时此刻线程缓存中有多少空闲线程。
  • Threads_connected :代表当前已建立连接的数量,因为一个连接就需要一个线程,所以也可以看成当前被使用的线程数。
  • Threads_created :代表从最近一次服务启动,已创建线程的数量。为处理连接请求创建过的线程数,如果发现Threads_created值过大的话,表明MySQL服务器一直在创建线程,这也是比较耗资源,可以适当增加配置文件中thread_cache_size值。
  • Threads_running :代表当前激活的(非睡眠状态)线程数。并不是代表正在使用的线程数,有时候连接已建立,但是连接处于sleep状态,这里相对应的线程也是sleep状态。

2.线程缓存未命中率

线程缓存未命中率=Threads_created /Connections =378/65660=0.005756929637526652=6%还算合理

show global status like Connections%;

3.thread_cache_size设置原则

如果是短连接,适当设置大一点,因为短连接往往需要不停创建,不停销毁,如果大一点,连接线程都处于取用状态,不需要重新创建和销毁,所以对性能肯定是比较大的提升。 对于长连接,不能保证连接的稳定性,所以设置这参数还是有一定必要,可能连接池的问题,会导致连接数据库的不稳定性,也会出现频繁的创建和销毁,但这个情况比较少,如果是长连接,可以设置成小一点,一般在50-100左右。

物理内存设置规则:通过比较Connections 和 Threads_created 状态的变量,可以看到这个变量的作用。(-->表示要调整的值) 根据物理内存设置规则如下: 1G ---> 8 2G ---> 16 3G ---> 32 >3G ---> 64

查询thread_cache_size设置

show global status likethread_cache_size;

设置命令:

mysql> set global thread_cache_size=16 编辑/etc/my.cnf 更改/添加 thread_concurrency = 16

以上是关于MySQL参数优化之thread_cache_size的主要内容,如果未能解决你的问题,请参考以下文章

mysql优化之参数优化

Mysql性能优化之参数配置(转)

mysql优化之参数优化(转)

Hive优化之Hive的配置参数优化

MySQL性能优化之max_connections配置参数浅析

mysql之 CentOS系统针对mysql参数优化