是否有每隔几分钟 ping 一次数据库的解决方法?

Is there a workaround for pinging a database every few minutes?

所以,我有一个 NodeJS MySql 系统,它每 10 分钟(可能将其设置为一分钟)对数据库执行一次 ping 操作,以免失去连接,但这不是我喜欢编写的代码质量. 所以,现在我问自己,是否有任何方法可以避免这种情况。 我没有计划池是什么,或者它们做什么。我在其他一些帖子中看到过它们,但没有仔细研究,这是唯一的选择吗?
提前致谢。

是的,您应该了解连接池 - 它们是管理连接(或一组连接以支持并发)的好工具。

连接——无论是连接到数据库还是连接到任何其他远程系统——都不可靠。它们可以来来去去,你不能假设连接会永远存在。主机有时会重新启动,网络链接可能会中断,或者防火墙可能会选择终止您的 TCP 会话。

当然,您可以实现一个“连接回收器”,它维护一个连接并在它关闭时用一个新连接替换它。但是,这将是无效率的,因为池已经这样做了——只是它通常在后台管理超过 1 个实例。无论如何,这都是一个很好的学习练习。

池还有另一个优势 - 它可以根据负载进行扩展,根据需要创建和销毁连接。这使您可以在应用程序负载较低时减少数据库负载。

作为结束语,如果您使用查询构建器 (knex.js)、对象关系映射器(sequelize、TypeORM)或其他类型的抽象数据库访问的工具,它们通常会使用池无论如何,在幕后 - 所以了解这一重要的基础设施层在长期 运行.

中是有益的