一尘不染

mysql_connect VS mysql_pconnect

mysql

我对此表示怀疑,我已经在网上搜索过,答案似乎多样化。通过PHP连接到数据库时,在mysql_connect上使用mysql_pconnect更好吗?我读到pconnect的扩展性要好得多,但另一方面,它是一个持久连接…同时拥有10000个连接(全部持久)对我而言似乎不可扩展。

提前致谢。


阅读 253

收藏
2020-05-17

共1个答案

一尘不染

对于MySQL,持久连接应该是不必要的。在其他数据库(例如Oracle)中,建立连接既昂贵又费时,因此,如果您可以重用连接,那将是一个巨大的胜利。但是那些品牌的数据库提供了连接池,这可以更好地解决该问题。

与其他品牌的数据库相比,建立与MySQL数据库的连接要快得多,因此与其他品牌的数据库相比,使用持久连接给MySQL带来的收益成比例地减少。

持久连接也有不利之处。无论是否需要连接,数据库服务器都会为每个连接分配资源。因此,如果连接处于空闲状态,则会无目的地看到大量浪费的资源。我不知道您是否会达到10,000个空闲连接,但即使是数百个连接也很昂贵。

连接具有状态,对于PHP请求来说,从另一个PHP请求先前使用的会话中“继承”信息是不合适的。例如,临时表和用户变量通常在连接关闭时清除,但在使用持久性连接时不会清除。同样,基于会话的设置(例如字符集和排序规则)。另外,LAST_INSERT_ID()将报告会话期间最后生成的ID
,即使该ID在先前的PHP请求中也是如此。

至少对于MySQL而言,持久连接的弊端可能胜过它们的好处。还有其他更好的技术来实现高可伸缩性。


2014年3月更新:

与其他品牌的RDBMS相比,MySQL的连接速度始终很低,但它的速度甚至越来越好。

参见http://mysqlserverteam.com/improving-connectdisconnect-
performance/

在MySQL 5.6中,我们开始着手优化代码处理连接和断开连接。并且这项工作在MySQL
5.7中得到了加速。在这篇博客文章中,我将首先展示我们已经取得的成果,然后描述我们为获得这些成果所做的努力。

阅读博客以获取更多详细信息和速度比较。

2020-05-17