mysql -参数thread_cache_size优化方法 小结

作者:mdxy-dxy 时间:2024-01-13 14:33:33 

全局,动态,默认值-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 |
+------------------+

下面是一些补充说明:

根据调查发现以上服务器线程缓存thread_cache_size没有进行设置,或者设置过小,这个值表示可以重新利用保存在缓存中线程的数量,当断开连接时如果缓存中还有空间,那么客户端的线程将被放到缓存中,如果线程重新被请求,那么请求将从缓存中读取,如果缓存中是空的或者是新的请求,那么这个线程将被重新创建,如果有很多新的线程,增加这个值可以改善系统性能.通过比较 Connections 和 Threads_created 状态的变量,可以看到这个变量的作用。(-->表示要调整的值) 根据物理内存设置规则如下:

1G ---> 8
2G ---> 16
3G ---> 32
>3G ---> 64

优化方法:

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

thread_concurrency = 16

1、MySQL服务器的线程数查看方法:

show  global status like 'Thread%';

mysql -参数thread_cache_size优化方法 小结

Threads_created:创建过的线程数,如果发现Threads_created值过大的话,表明MySQL服务器一直在创建线程,这也是比较耗资源,可以适当增加配置文件中thread_cache_size值

2、优化参数thread_cache_size

thread_cache_size:当客户端断开之后,服务器处理此客户的线程将会缓存起来以响应下一个客户而不是销毁(前提是缓存数未达上限)

即可以重新利用保存在缓存中线程的数量,当断开连接时如果缓存中还有空间,那么客户端的线程将被放到缓存中,如果线程重新被请求,那么请求将从缓存中读取,如果缓存中是空的或者是新的请求,那么这个线程将被重新创建,如果有很多新的线程,增加这个值可以改善系统性能。

thread_cache_size大小的设置:

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

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

1G  ---> 8
2G  ---> 16
3G  ---> 32
>3G  ---> 64

查询thread_cache_size设置

show global status like'thread_cache_size';

优化方法:

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

3、mysql kill线程

mysqladmin start slave stop slave kill某个连接到mysqlServer的线程

标签:thread,cache,size,优化
0
投稿

猜你喜欢

  • ASP如何使用CDONTS来发送电子邮件?

    2010-06-05 12:35:00
  • PHP使用星号隐藏用户名,手机和邮箱的实现方法

    2023-11-05 10:41:56
  • 学生如何注册Pycharm专业版以及pycharm的安装

    2023-01-20 15:43:40
  • 详解Pycharm出现out of memory的终极解决方法

    2021-12-08 18:14:23
  • Python面试题之统计哈希列表中最多元素

    2023-06-26 20:24:49
  • Python标准库之sqlite3使用实例

    2023-08-12 18:44:05
  • 如何使用python-opencv批量生成带噪点噪线的数字验证码

    2023-10-14 03:38:54
  • MySQL和MongoDB设计实例对比

    2011-06-19 15:41:01
  • 批处理写的 oracle 数据库备份还原工具

    2024-01-25 06:32:27
  • 详解python和matlab的优势与区别

    2023-05-15 11:28:04
  • Python中hash加密简介及使用方法

    2022-08-16 01:06:06
  • MySQL使用ReplicationConnection导致连接失效解决

    2024-01-19 11:04:26
  • CSS hack:区分IE6,IE7,firefox

    2007-12-23 10:25:00
  • 在Python中处理时间之clock()方法的使用

    2021-09-22 06:07:26
  • Python暴力破解Mysql数据的示例

    2024-01-23 17:29:37
  • python抽象基类用法实例分析

    2021-03-04 11:06:25
  • javascript实现表格增删改操作实例详解

    2024-04-29 13:24:36
  • Python基本数据类型之字符串str

    2021-06-03 22:47:31
  • php 仿Comsenz安装效果代码打包提供下载

    2024-05-11 09:46:37
  • Go-ethereum 解析ethersjs中产生的签名信息思路详解

    2023-08-05 21:34:49
  • asp之家 网络编程 m.aspxhome.com