【Github】项目名:SMProxy – 基于MySQL协议和Swoole的数据库连接池
一、项目简介
SMProxy是一个基于MySQL协议,由Swoole开发的MySQL数据库连接池。其原理是将数据库连接作为对象存储于内存中。用户首次访问数据库时建立连接,后续从连接池获取空闲连接,使用后放回而非关闭。连接的建立与断开由连接池管理,可设置连接池参数,如初始连接数、连接上下限数、连接最大使用次数和最大空闲时间等,还能监视连接数量和使用情况。超出最大连接数时协程挂起,等有连接关闭再恢复协程操作。
二、项目特性
- 支持读写分离。
- 有效解决PHP带来的数据库连接瓶颈,支持数据库连接池。
- 支持SQL92标准,采用协程调度。
- 支持多个数据库连接、多个数据库、多个用户灵活搭配。
- 遵守MySQL原生协议,是跨语言、跨平台的通用中间件代理。
- 支持MySQL事务,支持HandshakeV10协议版本,完美兼容MySQL5.5 – 8.0,兼容各大框架,无缝提升性能。
三、项目设计初衷
PHP没有连接池,高并发时数据库连接易打满。Mycat等数据库中间件存在部分SQL无法使用(如不支持批量添加)且过于臃肿的问题。因此开发了这个仅支持连接池和读写分离的轻量级中间件,使用Swoole协程调度和HandshakeV10协议转发,程序更加稳定,无需像Mycat一样解析所有SQL包体,降低了复杂度。
四、项目总结
SMProxy为解决PHP数据库连接问题提供了很好的方案,其特性和设计初衷使其在特定场景下具有独特优势。欢迎大家在评论区留言讨论这个项目,也期待大家的Issue和PullRequest。