链氪巴士
  1. 首页
  2. 站点导航
  3. 文章
  4. 快讯
  5. 软件
  6. 书刊
  7. 关于

SMProxy:基于MySQL协议和Swoole的数据库连接池

SMProxy是一个基于MySQL协议与Swoole开发的MySQL数据库连接池。它将数据库连接以对象形式存于内存,管理连接建立、断开,可设参数控制连接池。支持读写分离等众多特性,解决PHP数据库连接瓶颈,设计初衷是应对PHP无连接池、Mycat等中间件的问题。欢迎讨论。

访问官网 →

【Github】项目名:SMProxy – 基于MySQL协议和Swoole的数据库连接池

一、项目简介

SMProxy是一个基于MySQL协议,由Swoole开发的MySQL数据库连接池。其原理是将数据库连接作为对象存储于内存中。用户首次访问数据库时建立连接,后续从连接池获取空闲连接,使用后放回而非关闭。连接的建立与断开由连接池管理,可设置连接池参数,如初始连接数、连接上下限数、连接最大使用次数和最大空闲时间等,还能监视连接数量和使用情况。超出最大连接数时协程挂起,等有连接关闭再恢复协程操作。

二、项目特性

  1. 支持读写分离。
  2. 有效解决PHP带来的数据库连接瓶颈,支持数据库连接池。
  3. 支持SQL92标准,采用协程调度。
  4. 支持多个数据库连接、多个数据库、多个用户灵活搭配。
  5. 遵守MySQL原生协议,是跨语言、跨平台的通用中间件代理。
  6. 支持MySQL事务,支持HandshakeV10协议版本,完美兼容MySQL5.5 – 8.0,兼容各大框架,无缝提升性能。

三、项目设计初衷

PHP没有连接池,高并发时数据库连接易打满。Mycat等数据库中间件存在部分SQL无法使用(如不支持批量添加)且过于臃肿的问题。因此开发了这个仅支持连接池和读写分离的轻量级中间件,使用Swoole协程调度和HandshakeV10协议转发,程序更加稳定,无需像Mycat一样解析所有SQL包体,降低了复杂度。

四、项目总结

SMProxy为解决PHP数据库连接问题提供了很好的方案,其特性和设计初衷使其在特定场景下具有独特优势。欢迎大家在评论区留言讨论这个项目,也期待大家的Issue和PullRequest。

项目地址

GitHub链接直达