我正在处理一个新的PHP项目,该项目调用记录类来更新数据库。目前,每个需要这样做的对象或脚本都会生成该对象的一个新实例。从理论上讲,这可能意味着每次调用多达六到七个实例。
该设计当前要求对象在构造函数方法中连接到数据库,这意味着0到7个连接?
对于这个演示,我将只使用MySQL,但由于它都隐藏在一个接口后面,人们可以想象它可以很容易地移植到其他数据存储中(而且可能会)。
考虑到项目的性质,响应速度是关键的优化点。然而,由于有这么多连接,当需求很高时,我是否会面临系统过载的风险,从而使一切都变慢?
在这种情况下,使用单例会更好(总体上更快)吗?
或者有什么办法吃我的蛋糕吗?
连接到数据库服务器需要时间,并且会消耗内存。此外,数据库服务器同时接受的连接数也是有限的。这就是为什么连接的数量应该尽可能少,这意味着只应该使用到同一数据库的单个连接。
仅使用单个连接并不意味着必须使用Singleton
模式。只需在脚本开始的某个地方创建连接对象,并将其传递给将执行DB查询的组件。
我可以向您推荐两种解决方案:
-
如果可以的话,使用存储过程,它将减少Mysql连接的数量,更安全,并且缓存。
-
第一次使用Mysql连接,然后将数据保存到Redis或Memcached中。
它符合您的查询和需求。
感谢
看看这个解决方案。它对每个连接使用单例方法,并处理多个适配器(如mysql、memcached等)之间的多个连接