我应该在每次请求时还是始终打开一个 MySQL 连接?
Should I open a a MySQL Connection every request or always?
假设我每 2 秒执行一次查询,我应该在每次请求时打开连接还是应该保持连接活动直到应用程序(服务器)停止?
根据我的经验,建立连接不太可能成为 mysql 服务器的瓶颈(连接开销在 mysql 中相当低)。话虽如此,重用现有连接通常是一种合适的方法,但需要仔细考虑:如果数据库服务器暂时不可用,则代码必须重新连接;如果服务器被更换,它必须重新连接(mysql 实现倾向于故障转移解决方案而不是真正的高可用性);如果应用程序使用到 mysql 的多个连接,则必须确保不要在用户或会话之间交叉连接(活动数据库、时区、字符集等是会话变量,本质上与连接相关联)。如果您不能胜任在这些和其他边缘情况下使可重用连接可靠的任务,那么每 2 秒创建一个新连接可能会免费提供这种持久性。
简而言之,短期连接的好处可能不太明显。除非您有理由相信它实际上会对您的情况产生有意义的影响(例如基准测试),否则我不会费心在维护持久连接方面增加智能。
假设我每 2 秒执行一次查询,我应该在每次请求时打开连接还是应该保持连接活动直到应用程序(服务器)停止?
根据我的经验,建立连接不太可能成为 mysql 服务器的瓶颈(连接开销在 mysql 中相当低)。话虽如此,重用现有连接通常是一种合适的方法,但需要仔细考虑:如果数据库服务器暂时不可用,则代码必须重新连接;如果服务器被更换,它必须重新连接(mysql 实现倾向于故障转移解决方案而不是真正的高可用性);如果应用程序使用到 mysql 的多个连接,则必须确保不要在用户或会话之间交叉连接(活动数据库、时区、字符集等是会话变量,本质上与连接相关联)。如果您不能胜任在这些和其他边缘情况下使可重用连接可靠的任务,那么每 2 秒创建一个新连接可能会免费提供这种持久性。
简而言之,短期连接的好处可能不太明显。除非您有理由相信它实际上会对您的情况产生有意义的影响(例如基准测试),否则我不会费心在维护持久连接方面增加智能。