持久的mysql连接的优点

时间:2014-05-10 17:00:15

标签: php mysql performance persistent-connection

在我的网站上,当用户打开他的个人资料或任何其他页面时(几乎所有页面都使用来自mysql的数据),我的网站在加载页面时会与mysql建立大约50个连接。我的开发服务器就是这种情况,运行基本操作系统。

当我开始了解mysql中的持久连接时,我感到很困惑。如果我要在VPS上运行此网站(启动时RAM较低),并考虑到大量mysql连接产生的开销,是否会使用持久连接来提高我网站的性能?

目前,我在每个功能中开始和结束连接。有没有更好的方法连接到mysql?

并且,考虑到如果100个用户同时使用我的网站,如果每个页面建立50-60个连接,性能会是什么?

2 个答案:

答案 0 :(得分:1)

你这么问我会回答。你做错了。您应该通过使用公共函数建立单个数据库连接来开始处理每个页面请求(每个外部可访问的.php文件),然后您应该重用该连接。

你正在逃避这种情况,因为你可能正在使用内置于php数据库访问库的自动连接池,并且因为你还没有扩展你的应用程序。

使用这种多连接策略,你无法将其扩展到很远,因为当你添加用户时,它的表现会非常糟糕。

您可以查看许多基于php的开源Web应用程序系统的示例。 WordPress就是一个例子。您会发现大多数都是通过打开数据库连接并将其句柄存储在全局变量中开始的。

你问:

  

根据CBroe的评论,我改变了我的策略。实际上,我是   使用多个数据库连接,但功能相同(不要   问为什么哈哈)。所以,如果我在启动时打开连接,然后通过   该函数的处理程序,这将是一个改进吗?

是的,没关系。您需要避免搅动连接以获得最佳性能。

如果您需要连接到多个不同的数据库,则可以全部打开它们。但听起来你需要只打一个数据库。

将处理程序传递给函数时,PHP没有很大的开销,所以不要担心。

答案 1 :(得分:0)

正如Ollie Jones奇妙解释的那样,我在启动时打开了连接,我的连接从每页50-60降到每页1。虽然我在本地开发服务器上看不到任何性能变化,但是当它在实时服务器上时,我们肯定会有很大改进。我没有必要使用持久连接。