猿问

Golang sql 数据库打开和关闭

在 Go database/sql 包中,它说很少用 db.Close 关闭数据库,因为它意味着被许多 go 例程共享。那么当我们给出 100 个查询相同数据的函数时,哪个更好:

  1. 在每个函数里面打开数据库

  2. 只打开数据库一次,每 100 个函数使用相同的连接。

1 更容易,因为如果一个失败,其他 99 仍然可以工作。并且不需要传递数据库连接参数。但在性能方面哪个更好?


慕村225694
浏览 297回答 1
1回答

慕容708150

您错过了文档中的一个重要部分:返回的数据库对于多个 goroutine 并发使用是安全的,并维护自己的空闲连接池。因此,应该只调用一次 Open 函数。很少需要关闭数据库。(强调我的)因此,您的选项 #2 实际上没有意义。连接是池化的 - 所以use the same connection for every 100 function不适用。此外,选项 #1 是浪费时间 - 按照文档说明只执行一次,但Ping在执行之后调用以确保一切正常(并让它实际尝试连接到数据库 - 无论驱动程序如何)。
随时随地看视频慕课网APP

相关分类

Go
我要回答