【问题标题】:PHP, MySQL and a large nummer of simple queriesPHP、MySQL 和大量简单查询
【发布时间】:2010-08-30 09:00:57
【问题描述】:

我正在实现一个应用程序,该应用程序将有很多客户端从我的网络服务器查询大量小数据包。现在我不确定是否使用持久数据连接到数据库。该数据库目前与网络服务器位于同一系统上,并且可以通过套接字进行连接,但这可能会在不久的将来发生变化。

据我所知,在 PHP 之前的几个版本中,mysqli_pconnect 已被删除,因为它的表现欠佳。与此同时,它似乎又回来了。

根据我的情况,我想我不会再有机会处理每分钟数千个查询,但要处理大量持久连接和每个连接只保留很少资源的 MySQL 配置,对吧?

感谢您的意见!

【问题讨论】:

  • 请注意,共享持久连接的所有客户端也共享在其上创建的临时表(在连接完成之前临时表不会被回收)。

标签: php mysqli persistent


【解决方案1】:

测试时发生了什么?

有了世界上的巢穴,没有实用的方法可以传达人们在 SO 响应中提供明确答案所需的所有信息。但是通常在建立 mysql 连接时开销很小,特别是如果它与数据库客户端(在本例中为 web 服务器)驻留在同一系统上。如果您使用文件系统而不是网络套接字,则开销会更少。

因此,我建议您将所有数据库调用抽象化,这样您就可以轻松地在连接类型之间切换,但编写您的系统以使用按需连接,并确保您的代码尽快显式释放连接 - 然后看看它是如何实现的行为。

C.

【讨论】:

  • 好的,谢谢!测试场景并不容易。我只想做好准备,而不是立即遇到问题。
【解决方案2】:

Are PHP persistant connections evil?

问题是只能这样 主机之间有许多活动连接 “Apache”和主机“MySQL”

持久连接通常会导致您达到最大连接数的问题。此外,在您的情况下,它并没有带来很大的好处,因为您的数据库服务器位于同一主机上。暂时保持正常连接。

【讨论】:

    【解决方案3】:

    正如他们所说,您的情况可能会有所不同,但我从未有过使用 PHP 持久连接的良好体验,包括 MySQL 和 Oracle(ODBC 和 OCI8)。每次我测试它时,系统都无法重用连接。在高负载下,我最终达到了上限,而我有数百个空闲连接。

    所以我的建议是你实际尝试一下,看看你的设置是否正确地重用了连接。如果它没有按预期工作,无论如何也不会造成太大损失:与其他 DBMS 相比,打开 MySQL 连接并不是特别昂贵。

    此外,不要忘记在适当的时候重置所有相关设置(无论您更改什么会话值,它都会等待您下次建立连接并碰巧重用该连接)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-25
      • 2015-05-30
      • 1970-01-01
      相关资源
      最近更新 更多