这是关于php进阶到架构之 swoole 系列学习课程:第三节:mysql连接池
学习目标 :
了解什么是mysql连接池,以及mysql使用场景。能在实际工作使用连接池(数据库连接池,redis连接池等等)解决高并发带来的问题。
场景 :
每秒同时1000个并发,但mysql数据库同时只支持400个连接,这样mysql就会宕机
解决方案 :
使用连接池,这个连接池建立了300个与mysql的连接对象,这1000个并发有序地共享连接池里的300个连接。
连接池的使用不但解决了mysql在高并发情况下宕机问题,还额外提高了性能。因为和mysql建立连接,消耗较大。使用连接池只需要连接一次mysql。
永不断开,需要程序常驻内存,这就需要借助swoole实现。
数据库连接池是程序启动时,建立足够的数据库连接,并将这些连接组成一个连接。由程序动态的对连接池中的连接进行申请,使用,释放和回补。
本次我是在Laravel框架中借助Swoole协程来实现对Redis及MySQL连接池的封装,Swoole官方文档中也给出了使用示例,可以参考: https://wiki.swoole.com/#/coroutine/conn_pool
封装前提是已经安装好了PHP的swoole及redis的扩展
本次使用版本介绍:Laravel版本是7+,Swoole版本是4+,Redis版本是6+
对mysql那一端形成一个远程过程的调用,通过XDR数据结构进行解析mysql传来的数据项(RPC也为sun最新提出并后来在linux上默认支持),也就是说像用户登录验证这一块用Mysql的长连接来实现,提高其效率运行相当稳定!欢迎分享,转载请注明来源:内存溢出
评论列表(0条)