SMProxy

MySQL 数据库连接池
授权协议 MIT
开发语言 PHP
所属分类 程序开发、 数据库连接池
软件类型 开源软件
地区 国产
投 递 者 蒋培
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

中文 | English 

SMProxy

release forks stars Build Status Gitter license SMProxy

Swoole MySQL Proxy

一个基于 MySQL 协议,Swoole 开发的MySQL数据库连接池。

原理

将数据库连接作为对象存储在内存中,当用户需要访问数据库时,首次会建立连接,后面并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。 使用完毕后,用户也并非将连接关闭,而是将连接放回连接池中,以供下一个请求访问使用。而连接的建立、断开都由连接池自身来管理。

同时,还可以通过设置连接池的参数来控制连接池中的初始连接数、连接的上下限数以及每个连接的最大使用次数、最大空闲时间等等。 也可以通过其自身的管理机制来监视数据库连接的数量、使用情况等。超出最大连接数会采用协程挂起,等到有连接关闭再恢复协程继续操作。

特性

  • 支持读写分离

  • 支持数据库连接池,能够有效解决 PHP 带来的数据库连接瓶颈

  • 支持 SQL92 标准

  • 采用协程调度

  • 支持多个数据库连接,多个数据库,多个用户,灵活搭配

  • 遵守 MySQL 原生协议,跨语言,跨平台的通用中间件代理

  • 支持 MySQL 事务

  • 支持 HandshakeV10 协议版本

  • 完美兼容 MySQL4.1 - 8.0

  • 兼容各大框架,无缝提升性能

设计初衷

PHP 没有连接池,所以高并发时数据库会出现连接打满的情况,Mycat 等数据库中间件会出现部分 SQL 无法使用,例如不支持批量添加等,而且过于臃肿。 所以就自己编写了这个仅支持连接池和读写分离的轻量级中间件,使用 Swoole 协程调度 HandshakeV10 协议转发使程序更加稳定,不用像 Mycat 一样解析所有 SQL 包体,增加复杂度。

开发与讨论

  • Swoole MySQL Proxy 一个基于 MySQL 协议,Swoole 开发的支持连接池和读写分离的轻量级MySQL数据库连接池中间件。 支持读写分离 支持数据库连接池,能够有效解决 PHP 带来的数据库连接瓶颈 支持 SQL92 标准 采用协程调度 支持多个数据库连接,多个数据库,多个用户,灵活搭配 遵守 MySQL 原生协议,跨语言,跨平台的通用中间件代理 支持 MySQL 事务 支持

  • 数据库连接池:SMProxy+Laravel 需求环境: swoole 2.1.3+ php 7.0+ 本机环境: Laravel 5.7 smproxy 1.3.1 mysql 5.7.26 swoole 4.1.1 php 7.1.30 Swoole Mysql Proxy 一个基于 MySQL 协议,Swoole 开发的MySQL数据库连接池。 文档:https://smproxy.lo

  • 本文使用的是CMPP2.0,CMPP3.0和此逻辑类似,使用的Java类不同而已 1.配置文件 cmpp.xml   <config> <!--与InfoX建立连接所需参数--> <ismg> <!-- InfoX主机地址,与移动签合同时移动所提供的地址 需修改--> <host>127.0.0.1</host> <!-- InfoX主机端口号

  • 原标题:SMProxy:基于 MySQL 协议,Swoole 开发的 MySQL 数据库连接池 Swoole MySQL Proxy 一个基于 MySQL 协议,Swoole 开发的MySQL数据库连接池。 原理 将数据库连接作为对象存储在内存中,当用户需要访问数据库时,首次会建立连接,后面并非建立一个新的连接,而是从连接池中取出一个已建立的空闲连接对象。 使用完毕后,用户也并非将连接关闭,而是将

 相关资料
  • 连接数据库 在能够对MongDB进行操作之前,需要使用BuguFramework创建一个数据库连接,代码如下: BuguConnection conn = BuguFramework.getInstance().createConnection(); conn.connect("192.168.0.100", 27017, "mydb", "username", "password"); 也可以

  • 一、全局配置定义 return array( 'DB_TYPE' => 'mysql', 'DB_HOST' => '127.0.0.1', 'DB_NAME' => 'thinkcmf', 'DB_USER' => 'root', 'DB_PWD' => 'root', 'DB_PORT' => '3306', 'DB_PREFIX' =>

  • ThinkPHP内置了抽象数据库访问层,把不同的数据库操作封装起来,我们只需要使用公共的Db类进行操作,而无需针对不同的数据库写不同的代码和底层实现,Db类会自动调用相应的数据库驱动来处理。数据库抽象访问层基于PDO方式,目前内置包含了Mysql、SqlServer、PgSQL、Sqlite等数据库的支持。 如果应用需要使用数据库,必须配置数据库连接信息,数据库的配置文件有多种定义方式。 配置文件

  • 本文向大家介绍java连接mysql数据库 java连接sql server数据库,包括了java连接mysql数据库 java连接sql server数据库的使用技巧和注意事项,需要的朋友参考一下 在java的应用中,我们经常会对数据库进行必要的操作,下来我们就了解一下如何用java连接mysql数据库 以及java连接sql server数据库 一、mysql 二、sql server 以上就

  • 主要内容:DBI 结构,数据库连接,实例,插入操作,更新操作,删除数据,使用 do 语句,COMMIT 操作,ROLLBACK 操作,断开数据库连接本章节我们将为大家介绍 Perl 数据库的连接。 Perl 5 中我们可以使用 DBI 模块来连接数据库。 DBI 英文全称:Database Independent Interface,中文称为数据库独立接口。 DBI 作为 Perl 语言中和数据库进行通讯的标准接口,它定义了一系列的方法,变量和常量,提供一个和具体数据库平台无关的数据库持久层。

  • 在操作 MongoDB 数据库之前我们需要先连接数据库,您可以使用 MongoDB shell 来连接 MongoDB,也可以使用 PHP、Java 等编程语言来连接 MongoDB,本节我们主要介绍一下使用 MongoDB shell 来连接 MongoDB。 在连接 MongoDB 之前,我们需要先启动 MongoDB,启动 MongoDB 的方式非常简单,您只需要在 MongoDB 安装目录

  • 主要内容:1. 导入JDBC包,2. 注册JDBC驱动程序,数据库URL配置,创建连接对象,使用具有用户名和密码的数据库URL,关闭JDBC连接安装相应的驱动程序后,现在是时候来学习使用JDBC建立数据库连接了。 建立JDBC连接所涉及的编程相当简单。 以下是基本的四个步骤 - 导入JDBC包:使用Java语言的语句在Java代码开头位置导入所需的类。 注册JDBC驱动程序:使JVM将所需的驱动程序实现加载到内存中,从而可以满足JDBC请求。 数据库URL配置:创建一个正确格式化的地址,指向要连

  • 本章介绍如何从OrientDB命令行连接到特定数据库。 它打开一个数据库。 以下语句是Connect命令的基本语法。 以下是有关上述语法中选项的详细信息。 - 定义数据库的URL。 URL包含两部分,第一部分是,第二部分是。 - 定义模式,即本地模式或远程模式。 - 定义数据库的路径。 - 定义要连接到数据库的用户。 - 定义连接到数据库的密码。 示例 我们已经在前面的章节中创建了一个名为的数据库