easyswoole事务mysql_学习Swoole 遇到的问题。用Task实现的Mysql连接池如何实现Mysql事务?...

数据库连接池并不能减少MySQL查询的消耗,而是为了避免MySQL维持大量的数据库连接.

MySQL最大连接数max_connections默认值为151(最大值可以过万). 假设一个worker进程保持一个到MySQL的长连接. 当Swoole服务的worker进程数(对应CPU核心数)超过151时,MySQL默认会拒绝新的连接. 假设一台服务器CPU核心数为32,开启32个Swoole worker进程. 当服务器数量达到4台时(32*4=128),MySQL才需要考虑配置更大的max_connections. 把max_connections调整为1510(默认值的10倍),可供40台Swoole应用服务器使用. 可见,当Swoole应用服务器过百时,数据库连接池才有意义,否则就是简单问题复杂化.

Swoole的MySQL连接池是通过异步swoole_mysql+SplQueue来实现的.

https://github.com/matyhtf/framework/blob/master/libs/Swoole/Async/Pool.php (核心方法:doTask)

https://github.com/matyhtf/framework/blob/master/libs/Swoole/Async/MySQL.php (核心方法:connect/query)

一般情况下,用PDO长连接就行了,连Swoole提供的异步MySQL客户端都可以不用,这样能保证数据库逻辑能够同步顺序书写,不需要像异步那样嵌套回调.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值