我应该在每次请求时打开MySQL连接,还是总是打开?

我应该在每次请求时打开MySQL连接,还是总是打开?,mysql,connection,Mysql,Connection,假设我每2秒钟执行一次查询,我是应该在每次请求时打开连接,还是应该在应用程序(服务器)停止之前保持连接的活动状态?根据我的经验,建立连接不太可能成为mysql服务器的瓶颈(mysql中的连接开销相当低)。尽管如此,重用现有连接通常是一种合适的方法,但它需要仔细考虑:如果数据库服务器暂时不可用,代码必须重新连接;如果更换了服务器,它必须重新连接(mysql实现倾向于故障切换解决方案,而不是真正的高可用性);如果应用程序使用到mysql的多个连接,则必须确保不要在用户或会话之间交叉连接(活动数据库、

假设我每2秒钟执行一次查询,我是应该在每次请求时打开连接,还是应该在应用程序(服务器)停止之前保持连接的活动状态?

根据我的经验,建立连接不太可能成为mysql服务器的瓶颈(mysql中的连接开销相当低)。尽管如此,重用现有连接通常是一种合适的方法,但它需要仔细考虑:如果数据库服务器暂时不可用,代码必须重新连接;如果更换了服务器,它必须重新连接(mysql实现倾向于故障切换解决方案,而不是真正的高可用性);如果应用程序使用到mysql的多个连接,则必须确保不要在用户或会话之间交叉连接(活动数据库、时区、字符集等都是会话变量,本质上与连接相关联)。如果您无法在这些和其他边缘情况下确保可重用连接的可靠性,那么每2秒创建一个新连接可以免费提供这种耐用性


简言之,短暂的联系可能带来不太明显的好处。除非您有理由相信它实际上会对您的情况产生有意义的影响(例如基准测试),否则我不会费心添加有关维护持久连接的智能。

假设项目不断增长,并且我每秒会收到大约200个请求?我不会跟进。您是每2秒执行一次查询,还是针对每个连接执行一次查询,目前平均每2秒执行一次?在第一个例子中,我每2秒执行一个查询。在第二个例子(上面的注释)中,我每秒执行200个查询。然后我想问题是,“请求”和“查询”是什么。通常,短寿命连接的生命周期会看到一个连接、设置几个会话参数(选择数据库等),然后在连接关闭之前执行许多查询。如果200个查询都是同一个连接的一部分,那么这并不重要。如果每个查询都是一个不同的连接,那么听起来好像有很多并发的新连接,在这种情况下,您可能需要考虑重用连接。一定要考虑耐用性!