Golang sql数据库打开和关闭

时间:2014-12-02 03:03:53

标签: sql database go database-connection

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

  1. 在每个功能中打开数据库
  2. 仅打开数据库一次,每100个函数使用相同的连接。
  3. 1更容易,因为如果一个失败,其他99仍然可以工作。并且无需传递数据库连接参数。但在性能方面明智哪一个更好?

1 个答案:

答案 0 :(得分:8)

您错过了文档所说内容的重要部分:

  

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

(强调我的)

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