我有这个疑问,我在网上搜索,答案似乎是多样化的.当通过PHP连接到数据库时,使用mysql_pconnect而不是mysql_connect更好吗?我读到pconnect的扩展性要好得多,但另一方面,作为持久连接......同时拥有10 000个连接,所有持久性,对我来说似乎不具备可扩展性.
提前致谢.
MySQL不需要持久连接.在其他数据库(例如Oracle)中,建立连接既昂贵又耗时,因此如果您可以重新使用连接,那将是一个巨大的胜利.但这些品牌的数据库提供连接池,以更好的方式解决问题.
与其他品牌相比,快速建立与MySQL数据库的连接,因此使用持久连接为MySQL提供的成本比其他品牌数据库的成本要小.
持久的联系也有缺点.无论是否需要连接,数据库服务器都会为每个连接分配资源.因此,如果连接空闲,您会看到大量浪费的资源.我不知道你是否会达到10,000个闲置连接,但即使是几百个也是昂贵的.
连接具有状态,并且PHP请求从先前由另一个PHP请求使用的会话"继承"信息是不合适的.例如,临时表和用户变量通常在连接关闭时清除,但如果使用持久连接则不会.同样基于会话的设置,如字符集和整理.此外,LAST_INSERT_ID()
将报告在会话期间最后生成的id - 即使是在先前的PHP请求期间.
至少对于MySQL来说,持久连接的缺点可能超过了它们的好处.还有其他更好的技术可以实现高可扩展性.
2014年3月更新:
与其他品牌的RDBMS相比,MySQL连接速度始终较低,但它的性能甚至更好.
请参阅http://mysqlserverteam.com/improving-connectdisconnect-performance/
在MySQL 5.6中,我们开始致力于优化代码处理连接和断开连接.这项工作在MySQL 5.7中得到了加速.在这篇博文中,我将首先展示我们已经取得的成果,然后描述我们为获得它们所做的工作.
阅读博客了解更多详情和速度比较.