关于php:PHP的福音支持多数据库连接高性能的开源MySQL连接池

34次阅读

共计 1112 个字符,预计需要花费 3 分钟才能阅读完成。

对于很多 PHP 开发者来说,连贯数据库始终是个让人头疼的问题,那么明天 Gitee 为大家介绍的就是一款一个 基于 MySQL 协定,Swoole 开发的 MySQL 数据库连接池

项目名称: SMProxy

我的项目作者: louislivi

开源许可协定: MIT

我的项目地址:https://gitee.com/louislivi/smproxy

设计初衷

PHP 没有连接池,所以高并发时数据库会呈现连贯打满的状况,Mycat 等数据库中间件会呈现局部 SQL 无奈应用,例如不反对批量增加等,而且过于臃肿。所以就本人编写了这个仅反对连接池和读写拆散的轻量级中间件,应用 Swoole 协程调度 HandshakeV10 协定转发使程序更加稳固,不必像 Mycat 一样解析所有 SQL 包体,减少复杂度。

我的项目原理

将数据库连贯作为对象存储在内存中,当用户须要拜访数据库时,首次会建设连贯,前面并非建设一个新的连贯,而是从连接池中取出一个已建设的闲暇连贯对象。应用结束后,用户也并非将连贯敞开,而是将连贯放回连接池中,以供下一个申请拜访应用。而连贯的建设、断开都由连接池本身来治理。

同时,还能够通过设置连接池的参数来管制连接池中的初始连接数、连贯的上上限数以及每个连贯的最大应用次数、最大闲暇工夫等等。也能够通过其本身的管理机制来监督数据库连贯的数量、应用状况等。超出最大连接数会采纳协程挂起,等到有连贯敞开再复原协程持续操作。

个性

  • 反对读写拆散
  • 反对数据库连接池,可能无效解决 PHP 带来的数据库连贯瓶颈
  • 反对 SQL92 规范
  • 采纳协程调度
  • 反对多个数据库连贯,多个数据库,多个用户,灵便搭配
  • 恪守 MySQL 原生协定,跨语言,跨平台的通用中间件代理
  • 反对 MySQL 事务
  • 反对 HandshakeV10 协定版本
  • 完满兼容 MySQL5.5 – 8.0
  • 兼容各大框架,无缝晋升性能

性能测试

介绍了这么多,那么这个我的项目的性能到底如何呢?咱们能够看一下作者进行的性能测试。

没用框架的 PHP 7.2.6

未应用连接池:

应用连接池:

ThinkPHP 5.0

未应用连接池:

应用连接池:

Laravel 5.7

未应用连接池:

应用连接池:

MySQL

未应用连接池:

应用连接池:

当然,作者提供的测试后果只是一个参考,各位开发者在亲自应用的时候,因为数据量,网络环境,数据库配置的不同,以理论压测的后果为准。

如果你想理解 SMProxy 具体的运行和配置办法,那么就点击前面的链接返回我的项目主页看看吧,记得给它一个 Star 哦:https://gitee.com/louislivi/smproxy

如果你正在寻找 PHP 的开源我的项目学习,Gitee 上也有很多:https://gitee.com/explore/all?lang=PHP

正文完
 0