// SetMaxIdleConns sets the maximum number of connections in the idle connection pool.
db.DB().SetMaxIdleConns(10)
// SetMaxOpenConns sets the maximum number of open connections to the database.
db.DB().SetMaxOpenConns(100)
// SetConnMaxLifetime sets the maximum amount of time a connection may be reused.
db.DB().SetConnMaxLifetime(time.Hour)
3条答案
按热度按时间b4lqfgs41#
**TLDR:**是,尝试重新使用返回的DB对象。
gorm.open执行以下操作:(或多或少):
1.查找给定方言的驱动程序
1.调用
sql.Open
以返回DB
对象1.调用
DB.Ping()
以强制它与数据库通信这意味着为每个
gorm.Open
创建一个sql.DB
对象。根据文档,这意味着为每个DB对象创建一个连接池。这意味着对sql.Open的建议适用于
gorm.Open
:返回的数据库对于多个goroutine的并发使用是安全的,并且维护着它自己的空闲连接池,因此Open函数应该只被调用一次,很少有必要关闭一个数据库。
muk1a3rh2#
是的,还要注意,在GORM v1和v2中,连接池都可以这样配置:
对
*gorm.DB
示例调用DB()
函数将返回基础*sql.DB
示例。xhv8bpkk3#
对于那些刚开始使用gorm的人,这里有一个更完整的例子。