繁体   English   中英

在PHP / MySQL中我应该打开多个数据库连接还是共享1?

[英]In PHP/MySQL should I open multiple database connections or share 1?

我想听听别人对此的看法? 目前,我在头类型文件中创建一个mysql数据库连接,然后将其包含在我站点的每个页面的顶部。 然后,我可以在该1个打开的连接上运行尽可能多的查询。 如果页面是由包含的6个文件构建的,并且有15个不同的mysql查询,那么它们都将在这个1连接上运行。

现在有时我会看到创建多个连接的类,例如每个查询一个。

使用一种方法比另一种方法有什么好处吗? 我认为1连接比多个好,但我可能是错的?

创建连接可能很昂贵( 我还没有这个语句的参考 编辑:啊哈! 这就是 )所以似乎共识是使用更少的连接。 对单个页面上的所有查询使用单个连接似乎是比多个连接更好的选择。

在PHP + MySQL中,通常每页使用多个连接没有太大的意义(只是更慢,消耗的RAM更多)。

它可能有用的唯一方法是当你改变可能干扰其他页面的连接paremters时(比如整理)。 但是好的PHP程序通常不会做那种东西。

此外,最好启用持久连接,以便在多页执行时重用1个MySQL连接。

如果真的取决于你怀疑网站会产生的活动水平 - 如果它是一个高流量的网站,你很快就会用完连接(除非你将调整MySQL的最大连接设置为一个愚蠢的高级别,但那个'最终研磨服务器停止)。

我通常建议网站的前端应该使用一个共享的数据库对象( singleton is your friend ),因为它不需要大量的纪律来写这个是你的意思,你不会浪费时间建立联系。 如果您需要在后端进行额外的并发查询,那么它不应该是一个很大的交易,因为这可能不是一个高度流量的区域。

不建议执行多个小查询,只需使用一个查询即可完成工作,您可以使用单个查询从多个表和多个数据库中获取数据。 请参阅以下链接:

http://www.x-developer.com/php-scripts/sql-connecting-multiple-databases-in-a-single-query

我没有看到使用多个连接的任何好处,我宁愿认为它是结构不良的标志。 这些是我可以考虑使用多个连接的原因:

  • 您必须多次初始化数据库。 建立连接时的连接属性(如SET NAMES UTF8 )必须在多行上完成。
  • 它肯定比单个连接慢。
  • 非技术原因:使用您的代码的人很可能不会期望它,并且可能花费数小时调试他在另一个连接中设置的连接属性。

拥有全局连接对象(或提供一个的类)是PHP中更好的方法。

您确定创建多个连接的类不只是在打开连接时返回对已打开连接的引用吗? 我已经看到了很多以这种方式构建的东西。 每页只使用一个连接,在性能方面确实更好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM