我有一个PHP应用程序是运行在与MySQL数据库的Apache服务器上。根据用户访问的子域,我将他们连接到一个数据库(sub1.domain.com连接到database_sub1,sub2.domain.com连接到database_sub2)。现在有10个子域数据库组合,但这个数字可能会增长到100多个。
那么,这是一件坏事吗?
考虑到我的情况,mysql_pconnect是可行的吗?
谢谢,如果更多的信息会有帮助,请让我知道。
乔希
发布于 2010-05-13 23:05:32
这是你写的应用吗?
如果是这样的话,从维护的角度来看,这可能会变成一场噩梦。
当您更改程序并需要更改数据库时,会发生什么?
除非您有一个很好的迁移工具来帮助您将所有数据库更改为新模式,否则您可能会发现自己处于一个痛苦的世界。
我知道您现在参与这个项目可能太远了,但是如果在模式中添加一点额外的关系来区分域(公司/用户),您就可以在一个数据库上运行它们,而只需要很少的额外开销。
如果性能真的成了问题(Read this),您可以实现集群或其他优雅的解决方案,但至少不需要维护100+数据库。
发布于 2010-05-11 06:16:02
这在一定程度上取决于配置的其余部分,但只要每个事务只涉及一个连接,那么数据库客户端代码的性能就应该与您预期的一样-与单个数据库的性能大致相同,但有更多的可能性来提高数据库服务器的性能,直到网络带宽的限制。
如果多个连接参与了一个事务,那么您可能需要一个符合XA的事务管理器,这通常会带来很大的性能开销。
发布于 2010-05-13 07:00:24
不,这不是坏事。
这是一个总的并行连接数量的问题。这可以由mysql设置中的"max_connections“来定义(默认是151,从MySQL 5.1.15开始),并受到您的平台的能力(即Windows上的2048<,Linux上的更多),硬件(内存)和系统设置(主要是打开文件的限制)的限制。如果你有许多并行用户,那么这可能是一个瓶颈,数据库的数量并不重要。
我做了一个脚本,在一次执行中连接400+数据库(一个接一个,不是并行的),我发现mysql + php处理得很好(没有明显的内存泄漏,没有大的开销)。所以我假设你的配置不会有问题。
而且,在web开发中,如果连接数据库本身没有显著的开销,finnaly - mysql_pconnect通常不是很好的考虑。你必须非常小心地管理它,以避免与max_connections,锁,挂起的脚本等问题。cron作业每秒都在运行,或者类似的情况)
https://stackoverflow.com/questions/2806774
复制相似问题