栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mysql 线程池

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mysql 线程池

mysql默认的线程处理方式

我们默认的线程处理方式是:one-thread-per-connection (服务器使用一个线程处理每个客户端连接),意思就是我们一个连接connection对应一个线程, 然后可以设置最大的connection连接数,max_connections。

这里有一个问题是,当我们的线程运行比较多的时候,其实往往mysql的QPS(每秒查询sql的次数)会下降,我们可以通过mysqlslap工具进行测试,通过改变不同的线程数量找出最优的QPS。 但是正常环境会有很多的连接,所以我们就需要用到mysql的线程池进行限流。

例如商城下订单,同时1秒有5000人购买,就有5000个线程修改商品的库存,5000的线程同时去操作,肯定QPS会下降,这时如果我们使用线程池的方式,线程池总共假如只能有50个线程,且50个线程是QPS最快的,这样就进行了限流,提高了我们数据库中的QPS。线程池相对于是一个池塘,一个线程执行完了,然后下一个线程进去执行。就是相当于控制了当前mysql的并行的线程的个数,从而达到mysql的QPS是最优的。

update stock set count = count - 1 where skuId = 1 AND count>0;

开启线程池功能

我们下载的mysql免费版本是不支持mysql线程池的,例如Server version: 5.7.16-log MySQL Community Server (GPL) 我的5.7的版本。

一般我们会用mysql-Percona版本来替代,mysql-Percona是mysql的一个分支版本。

在my.cnf 配置 thread_handling

thread_handling =  pool-of-threads 

执行 show global status like 'thread%'; 线程线程池的信息; 

Threadpool_idle_threads-->目前thread pool中还剩余多少个空闲thread
Threadpool_threads -->thread pool中允许同时running的最大线程数

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/764226.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号