在Go数据库/ sql包中,它说很少用db.Close关闭数据库,因为它意味着被许多go例程共享。那么当给出100个从同一数据查询的函数时,哪一个更好:
1更容易,因为如果一个失败,其他99仍然可以工作。并且无需传递数据库连接参数。但在性能方面明智哪一个更好?
答案 0 :(得分:8)
您错过了文档所说内容的重要部分:
返回的数据库可以安全地由多个goroutine并发使用,而维护自己的空闲连接池。因此,Open函数应该只调用一次。很少需要关闭数据库。
(强调我的)
所以,你的选择#2实际上没有意义。这些连接是合并的 - 因此use the same connection for every 100 function
并不适用。另外,选项#1是浪费时间 - 只需按照文档说明进行一次,但在确保一切正常(并让它实际上尝试连接到数据库之后)调用Ping
- 无论如何司机)。