我如何使用 db-resolver 为 gorm v2 中的多个实例配置 sql 连接
How can i configure sql connection for several instances in gorm v2 using db-resolver
我正在为我的项目使用 gorm.io/gorm 和 gorm.io/plugin/dbresolver。如何为每个连接最正确地配置 MaxIdleConns、MaxOpenConns、ConnMaxIdleTime 和 ConnMaxLifetime?
db, _ := gorm.Open(postgres.Open(config.GetConnectArgs()), &gorm.Config{})
replicas := make([]gorm.Dialector, len(config.GetReplicasConfig()))
for i, cfg := range config.GetReplicasConfig() {
replicas[i] = postgres.Open(cfg.GetConnectArgs())
}
resolver := dbresolver.Register(dbresolver.Config{
Replicas: replicas,
Policy: dbresolver.RandomPolicy{},
})
_ = db.Use(resolver)
dbConfig, _ := db.DB()
dbConfig.SetMaxOpenConns(0)
dbConfig.SetMaxIdleConns(10)
dbConfig.SetConnMaxLifetime(time.Hour)
此代码仅 return 单个连接吗?
dbConfig, _ := db.DB()
dbConfig.SetMaxOpenConns(0)
dbConfig.SetMaxIdleConns(10)
dbConfig.SetConnMaxLifetime(time.Hour)
解析器可以为整个池配置连接
db, _ := gorm.Open(postgres.Open(config.GetConnectArgs()), &gorm.Config{})
replicas := make([]gorm.Dialector, len(config.GetReplicasConfig()))
for i, cfg := range config.GetReplicasConfig() {
replicas[i] = postgres.Open(cfg.GetConnectArgs())
}
resolver := dbresolver.Register(dbresolver.Config{
Replicas: replicas,
Policy: dbresolver.RandomPolicy{},
}).
SetMaxOpenConns(0).
SetMaxIdleConns(10).
SetConnMaxLifetime(time.Hour)
_ = db.Use(resolver)
它写在文档中。抱歉这个愚蠢的问题。
我正在为我的项目使用 gorm.io/gorm 和 gorm.io/plugin/dbresolver。如何为每个连接最正确地配置 MaxIdleConns、MaxOpenConns、ConnMaxIdleTime 和 ConnMaxLifetime?
db, _ := gorm.Open(postgres.Open(config.GetConnectArgs()), &gorm.Config{})
replicas := make([]gorm.Dialector, len(config.GetReplicasConfig()))
for i, cfg := range config.GetReplicasConfig() {
replicas[i] = postgres.Open(cfg.GetConnectArgs())
}
resolver := dbresolver.Register(dbresolver.Config{
Replicas: replicas,
Policy: dbresolver.RandomPolicy{},
})
_ = db.Use(resolver)
dbConfig, _ := db.DB()
dbConfig.SetMaxOpenConns(0)
dbConfig.SetMaxIdleConns(10)
dbConfig.SetConnMaxLifetime(time.Hour)
此代码仅 return 单个连接吗?
dbConfig, _ := db.DB()
dbConfig.SetMaxOpenConns(0)
dbConfig.SetMaxIdleConns(10)
dbConfig.SetConnMaxLifetime(time.Hour)
解析器可以为整个池配置连接
db, _ := gorm.Open(postgres.Open(config.GetConnectArgs()), &gorm.Config{})
replicas := make([]gorm.Dialector, len(config.GetReplicasConfig()))
for i, cfg := range config.GetReplicasConfig() {
replicas[i] = postgres.Open(cfg.GetConnectArgs())
}
resolver := dbresolver.Register(dbresolver.Config{
Replicas: replicas,
Policy: dbresolver.RandomPolicy{},
}).
SetMaxOpenConns(0).
SetMaxIdleConns(10).
SetConnMaxLifetime(time.Hour)
_ = db.Use(resolver)
它写在文档中。抱歉这个愚蠢的问题。