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

Golang sql 数据库打开和关闭

Golang sql 数据库打开和关闭

Go
慕村225694 2021-09-09 15:00:16
在 Go database/sql 包中,它说很少用 db.Close 关闭数据库,因为它意味着被许多 go 例程共享。那么当我们给出 100 个查询相同数据的函数时,哪个更好:在每个函数里面打开数据库只打开数据库一次,每 100 个函数使用相同的连接。1 更容易,因为如果一个失败,其他 99 仍然可以工作。并且不需要传递数据库连接参数。但在性能方面哪个更好?
查看完整描述

1 回答

?
慕容708150

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

您错过了文档中的一个重要部分:

返回的数据库对于多个 goroutine 并发使用是安全的,并维护自己的空闲连接池。因此,应该只调用一次 Open 函数。很少需要关闭数据库。

(强调我的)

因此,您的选项 #2 实际上没有意义。连接是池化的 - 所以use the same connection for every 100 function不适用。此外,选项 #1 是浪费时间 - 按照文档说明只执行一次,但Ping在执行之后调用以确保一切正常(并让它实际尝试连接到数据库 - 无论驱动程序如何)。


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

添加回答

举报

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