为了账号安全,请及时绑定邮箱和手机立即绑定

mysql 连接应该在 golang 中存活多久

mysql 连接应该在 golang 中存活多久

Go
绝地无双 2021-09-27 20:37:12
我在 golang 中使用 mysql 并阅读此文档。它说尽管在完成数据库后 Close() 是惯用的做法,但 sql.DB 对象被设计为长期存在的。不要频繁地打开() 和关闭() 数据库。我不知道应该连接多久。现在,如果需要,我会打开每个 http 请求的连接。是不是太频繁了?
查看完整描述

2 回答

?
慕哥6287543

TA贡献1831条经验 获得超10个赞

在同一份文件的进一步下方,它写道:

相反,为您需要访问的每个不同的数据存储创建一个 sql.DB 对象,并保留它直到程序完成访问该数据存储。根据需要传递它,或者以某种方式使其在全球范围内可用,但保持打开状态。并且不要从短期函数中打开() 和关闭()。相反,将 sql.DB 作为参数传递到那个短暂的函数中。

如果不将 sql.DB 视为长期存在的对象,则可能会遇到诸如连接重用和共享不佳、可用网络资源耗尽或由于 TIME_WAIT 中剩余大量 TCP 连接而导致的零星故障等问题地位。此类问题表明您没有按照设计使用 database/sql。

打开和关闭数据库连接是一项代价高昂的操作,因此您希望尽可能避免这种情况。您绝对不想在每次请求后关闭连接(除非一天只有几个,即使这样,只要应用程序运行,您就可以保持打开状态)

database/sql 包在底层使用了连接池,因此您不必担心管理多个连接。


查看完整回答
反对 回复 2021-09-27
  • 2 回答
  • 0 关注
  • 319 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信