mysql优化之thread_cache_size

本文介绍了MySQL服务器中线程缓存(thread_cache_size)的重要性及其优化方法。通过合理设置线程缓存大小,可以有效减少线程创建和销毁带来的资源消耗,显著提高服务器性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

show  global status like 'Thread%';


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功能在mysql数据库配置文件中是非常重要的一项功能了,如果对thread_cache_size优化做得好我们可以让服务器跑得非常快,设置不好就会发现很小访问量就非常的卡哦。

thread_cache_size

查询进程使用情况
 代码如下     复制代码
mysql> show global status like ‘Thread%’;
+——————-+———-+
| Variable_name | Value |
+——————-+———-+
| Threads_cached | 26 |
| Threads_connected | 510 |
| Threads_created | 35168165 |
| Threads_running | 459 |
+——————-+———-+
4 rows in set (0.01 sec)
查询服务器 thread_cache_size配置
 代码如下     复制代码
mysql> show variables like ‘thread_cache_size’;
+——————-+——-+
| Variable_name | Value |
+——————-+——-+
| thread_cache_size | 32 |
+——————-+——-+
1 row in set (0.00 sec)
如果我们在MySQL服务器配置文件中设置了thread_cache_size,当客户端断开之后,
服务器处理此客户的线程将会缓存起来以响应下一个客户而不是销毁(前提是缓存数未达上限)。
Threads_created表示创建过的线程数,如果发现Threads_created值过大的话,
表明 MySQL服务器一直在创建线程,这也是比较耗资源,可以适当增加配置文件中thread_cache_size值,

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

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

<think>好的,我需要帮助用户在MySQL中查看多个参数的值。根据用户提供的引用内容,尤其是引用[1]和引用[2],用户可能已经知道如何查询innodb_thread_concurrency,但需要扩展到其他参数。首先,我应该确认每个参数对应的查看方法。 用户提到的参数包括innodb_thread_concurrency、thread_pool_size、max_connections、thread_cache_size、innodb_read_io_threads、innodb_write_io_threads、query_cache_type、query_cache_size和innodb_buffer_pool_size。根据MySQL的惯例,这些参数大多数可以通过SHOW VARIABLES语句来查询。 引用[1]提到使用SHOW VARIABLES LIKE '参数名',这应该是标准方法。但需要注意,有些参数可能需要特定的权限才能查看,或者是否在特定版本中存在。例如,thread_pool_size可能只在某些MySQL分支(如Percona Server)中存在,或者需要插件支持。因此,可能需要提示用户注意版本差异。 接下来,我需要逐一列出每个参数的查询语句。例如,max_connections和thread_cache_size应该同样使用SHOW VARIABLES。对于InnoDB相关的参数如innodb_read_io_threads和innodb_write_io_threads,同样适用该方法。 另外,用户提供的引用[3]提到了innodb_buffer_pool_size,这也应该用同样的方式查询。引用[4]中的read_buffer_size的查看方式类似,所以其他参数可以类推。 需要提醒用户注意权限问题,执行这些命令可能需要SUPER权限。另外,有些参数可能是动态的,可以通过SET命令调整,但用户的问题只是查看,所以不需要涉及修改部分。 最后,生成相关问题,可能需要包括如何调整这些参数、参数的作用、性能影响等,参考用户提供的示例中的问题结构。例如,询问如何优化这些参数或它们对数据库性能的影响。</think>在MySQL中查看系统参数值可通过`SHOW VARIABLES`指令实现。以下是具体操作步骤和对应参数的查询方法: ### 查看方法 1. **单个参数查询** 使用`SHOW VARIABLES LIKE '参数名'`格式,例如查看`innodb_thread_concurrency`: ```sql SHOW VARIABLES LIKE 'innodb_thread_concurrency'; -- 格式参考引用[1] ``` 2. **批量查询** 用正则表达式匹配多个参数: ```sql SHOW VARIABLES WHERE Variable_name IN ( 'innodb_thread_concurrency', 'thread_pool_size', 'max_connections', 'thread_cache_size', 'innodb_read_io_threads', 'innodb_write_io_threads', 'query_cache_type', 'query_cache_size', 'innodb_buffer_pool_size' ); ``` ### 参数说明 - **`innodb_thread_concurrency`**:控制InnoDB并发查询线程数,直接影响数据库查询阻塞风险[^2] - **`innodb_buffer_pool_size`**:决定InnoDB引擎缓存数据量大小,显著影响事务处理能力[^3] - **`query_cache_type`**:查询缓存开关,需配合`query_cache_size`设置生效 ### 注意事项 1. 执行需要`SUPER`权限 2. 部分参数(如`thread_pool_size`)仅在特定版本或分支(如Percona Server)有效 3. 参数值单位为字节,如`innodb_buffer_pool_size=134217728`表示128MB
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值