gorm.Open()每次调用时都会创建一个新的连接池吗?

问题描述 投票:0回答:1

我正在编写一段代码,它从多个不同的地方对数据库进行调用。在此代码中,每次需要与数据库进行交互时,我就一直使用gorm.Open()

我想知道的是,当我这样称呼时,幕后正在发生什么?每次调用时都会创建一个新的连接池吗?还是每次对gorm.Open()的调用都共享同一个连接池?

mysql go gorm
1个回答
0
投票

gorm.Open执行以下操作:(或多或少):

  1. 查找给定方言的驱动程序
  2. 调用sql.Open返回一个DB对象
  3. 调用DB.Ping()强制其与数据库对话

这意味着为每个sql.DB创建一个gorm.Open对象。对于doc,这意味着每个DB对象一个连接池。

这意味着sql.Open的建议适用于gorm.Open

返回的数据库可以安全地被多个goroutine和维护自己的空闲连接池。因此,打开功能应该只调用一次。很少需要关闭数据库。

© www.soinside.com 2019 - 2024. All rights reserved.