在 Go database/sql 包中,它说很少用 db.Close 关闭数据库,因为它应该被许多 go 例程共享。那么当我们有 100 个查询相同数据的函数时,哪个更好:
- 在每个函数中打开数据库
- 只打开数据库一次,每 100 个函数使用同一个连接。
1 更容易,因为如果一个失败,其他 99 个仍然可以工作。无需传递数据库连接参数。但在性能方面哪个更好?
最佳答案
您错过了文档中的一个重要部分:
The returned DB is safe for concurrent use by multiple goroutines and maintains its own pool of idle connections. Thus, the Open function should be called just once. It is rarely necessary to close a DB.
(强调我的)
因此,您的选项 #2 实际上没有意义。连接被合并 - 因此 对每 100 个函数使用相同的连接
不适用。此外,选项 #1 是浪费时间 - 按照文档所述只执行一次,但在执行后调用 Ping
只是为了确保一切正常(并让它实际尝试连接到数据库 - 无论驱动程序如何)。
关于sql - Golang sql数据库打开和关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27241187/