在 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
在执行之后调用以确保一切正常(并让它实际尝试连接到数据库 - 无论驱动程序如何)。
- 1 回答
- 0 关注
- 288 浏览
添加回答
举报
0/150
提交
取消