使用PHP会更快:多个DB连接类实例或一个单例


With PHP what would be faster: multiple DB connection class instances or a singleton?

我正在处理一个新的PHP项目,该项目调用记录类来更新数据库。目前,每个需要这样做的对象或脚本都会生成该对象的一个新实例。从理论上讲,这可能意味着每次调用多达六到七个实例。

该设计当前要求对象在构造函数方法中连接到数据库,这意味着0到7个连接?

对于这个演示,我将只使用MySQL,但由于它都隐藏在一个接口后面,人们可以想象它可以很容易地移植到其他数据存储中(而且可能会)。

考虑到项目的性质,响应速度是关键的优化点。然而,由于有这么多连接,当需求很高时,我是否会面临系统过载的风险,从而使一切都变慢?

在这种情况下,使用单例会更好(总体上更快)吗?

或者有什么办法吃我的蛋糕吗?

连接到数据库服务器需要时间,并且会消耗内存。此外,数据库服务器同时接受的连接数也是有限的。这就是为什么连接的数量应该尽可能少,这意味着只应该使用到同一数据库的单个连接。

仅使用单个连接并不意味着必须使用Singleton模式。只需在脚本开始的某个地方创建连接对象,并将其传递给将执行DB查询的组件。

我可以向您推荐两种解决方案:

  1. 如果可以的话,使用存储过程,它将减少Mysql连接的数量,更安全,并且缓存。

  2. 第一次使用Mysql连接,然后将数据保存到Redis或Memcached中。

它符合您的查询和需求。

感谢

看看这个解决方案。它对每个连接使用单例方法,并处理多个适配器(如mysql、memcached等)之间的多个连接