2010-08-30 43 views
3

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

正如我所知道的几个版本的PHP之前,mysqli_pconnect被删除,因为它表现不理想。在此期间,它似乎又回来了。

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

感谢您的输入!

+1

请注意,共享持久连接的所有客户端也共享在其上创建的临时表(临时表不会被回收,直到连接完成)。 – Piskvor 2010-08-30 09:35:47

回答

1

当您测试它时发生了什么?

随着巢将在世界范围内,没有可行的方法可以传达所有人需要的信息,以便在SO响应中提供确定的答案。但是通常是建立一个mysql连接的开销很小,特别是如果它驻留在与数据库客户端(在本例中是web服务器)相同的系统上。如果使用文件系统而不是网络套接字,则开销更小。

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

C.

+0

好的,谢谢!测试场景并不容易。我只是想做好准备,而不是立即遇到问题。 – stpn108 2010-08-30 10:16:04

1

Are PHP persistant connections evil?

的问题是可以有主机 “阿帕奇”之间只有这么 许多连接活跃,主持“MySQL的”

持久连接通常给这样的问题:你打最大连接数。另外,就你的情况而言,由于数据库服务器位于同一主机上,因此它不会带来很大的好处。暂时保持正常连接。

1

正如他们所说,你的里程可能会有所不同,但我从来没有使用从PHP持久连接,包括MySQL和Oracle(ODBC和OCI8)的好经验。每次我测试它时,系统都不能重用连接。在高负载下,我最终达到了上限,而我有数百个闲置连接。

所以我的建议是,你真的尝试它,并找出你的设置是否正确地重用连接。如果它没有像预期的那样工作,反正它不会有很大的损失:与其他DBMS相比,打开MySQL连接并不是特别昂贵。

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