Mysql线程的基本设置

客户端发起连接到mysql server,mysql server监听进程,监听到新的请求,然后mysql为其分配一个新的 thread,去处理此请求。从建立连接之开始,CPU要给它划分一定的thread stack,然后进行用户身份认证,建立上下文信息,最后请求完成,关闭连接,同时释放资源。在高并发的情况下,将给系统带来巨大的压力,不能保证性能。MySQL服务器的线程数需要在一个合理的范围之内,这样才能保证MySQL服务器健康平稳地运行。

查看线程池的状态:

mysql> show variables like 'thread%';
+--------------------+---------------------------+
| Variable_name      | Value                     |
+--------------------+---------------------------+
| thread_cache_size  | 64                        |
| thread_concurrency | 10                        |
| thread_handling    | one-thread-per-connection |
| thread_stack       | 262144                    |
+--------------------+---------------------------+
  • thread_cache_size
    Threads_cached 中存放的最大连接线程数。在短连接的应用中Threads_cached 的功效非常明显,因为在应用中数据库的连接和创建是非常频繁的。如果不使用 Threads_cached那么消耗的资源是非常可观的。在长连接中虽然带来的改善没有短连接的那么明显,但是好处是显而易见的。但并不是越大越好,大了反而浪费资源,这个的确定一般认为和物理内存有一定关系。Mysql默认值为9。
1G —> 8
2G —> 16
3G —> 32
>3G —> 64

设置方法:

mysql> set global thread_cache_size=64
  • thread_concurrency
    thread_concurrency应设为CPU核数的2倍, 比如有一个双核的CPU,,那么thread_concurrency的应该为4。这个变量是针对Solaris系统的,如果设置这个变量的话,mysqld就会调用thr_setconcurrency()。这个函数使应用程序给同一时间运行的线程系统提供期望的线程数目。但是在5.7以后就已经抛弃了。

  • thread_handling
    运用Thread_Cache处理连接的方式,5.1.19添加的新特性。有两个值可选[no-threads|one-thread-per-connection] 。
      no-threads :服务器使用一个线程
      one-thread-per-connection :服务器为每个客户端请求使用一个线程

  • thread_stack
    每个连接被创建的时候,mysql分配给它的内存。这个值一般认为默认就可以应用于大部分场景了,除非必要非则不要动它。上面表示是256kb。

查看线程使用情况:

mysql>  show global status like 'Thread%';
+-------------------+-------+
| Variable_name     | Value |
+-------------------+-------+
| Threads_cached    | 41    |
| Threads_connected | 53    |
| Threads_created   | 541   |
| Threads_running   | 4     |
+-------------------+-------+
  • Threads_cached
    MySQL里面为了提高客户端请求创建连接过程的性能,提供了一个连接池也就是 Thread_cache池(大小是thread_cache_size),将空闲的连接线程放在连接池中,而不是立即销毁。这样的好处就是,当又有一个新的请求的时候,mysql不会立即去创建连接 线程,而是先去Thread_Cache中去查找空闲的连接线程,如果存在则直接使用,不存在才创建新的连接线程。 Thread_cache值表示已经被线程缓存池缓存的线程个数。

  • Threads_connected
    当前处于连接状态的线程个数,等于show processlist

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

  • Threads_running
    处于激活状态的线程的个数,这个一般都是远小于Threads_connected的。

转载 : http://www.jb51.net/article/51828.htm

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL是一个开源的关系型数据库管理系统,可以支持多线程查询数据库。通过使用多线程,可以同时执行多个查询操作,从而提高数据库的并发性和响应速度。 DBSqlMan是一个多线程访问MySQL的动态库,它是基于MySQL5开源的Windows下使用的MySQL二次开发库。DBSqlMan提供了一个简单的示例应用程序testDb,可以用来演示如何使用DBSqlMan进行多线程查询数据库。整个工程已经在VS2005下运行通过,并在实际应用中使用过。你可以从MySQL官网上下载MySQL5和DBSqlMan。 在本资源中,提供的源码经过本地编译并且可以运行。你只需要按照文档中的指导配置好环境,就可以使用这些资源进行MySQL的多线程查询。这些资源的源码系统完整,并经过专业老师的审定,可以满足基本的学习和使用参考需求。所以你可以放心地下载和使用这些资源。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [多线程访问mysql数据库](https://download.csdn.net/download/newstream2013/8337817)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Java Web课程设计,基于servlet+jsp+mysql做的影视管理系统.zip](https://download.csdn.net/download/qq_35831906/88259841)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [多线程并发查询mysql数据库中的数据](https://blog.csdn.net/weixin_34161064/article/details/94541053)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值