| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- package bootstrap
- import (
- "designs/config"
- "designs/global"
- "fmt"
- "go.uber.org/zap"
- "gorm.io/driver/clickhouse"
- "gorm.io/gorm"
- "time"
- )
- func InitClickhouseGorm() *gorm.DB {
- UserName := config.Get("clickhouse.userName")
- Password := config.Get("clickhouse.password")
- Host := config.Get("clickhouse.host")
- Port := config.Get("clickhouse.port")
- Database := config.Get("clickhouse.database")
- dsn := fmt.Sprintf("tcp://%s:%s?database=%s&username=%s&password=%s", Host, Port, Database, UserName, Password)
- clickConfig := clickhouse.Config{
- DSN: dsn,
- }
- if db, err := gorm.Open(clickhouse.New(clickConfig), &gorm.Config{
- Logger: getGormLogger(), // 使用自定义 Logger
- }); err != nil {
- global.App.Log.Error("clickhouse connect failed, err:", zap.Any("err", err))
- return nil
- } else {
- sqlDB, _ := db.DB()
- sqlDB.SetMaxIdleConns(5) // 空闲连接数 ≈ 平均QPS * 平均查询时间(秒)
- sqlDB.SetMaxOpenConns(20) // 最大连接数 ≈ 2 * CPU核心数
- sqlDB.SetConnMaxLifetime(30 * time.Minute) // 连接最大存活时间
- sqlDB.SetConnMaxIdleTime(5 * time.Minute) // 连接最大空闲时间
- //initMySqlTables(db)
- return db
- }
- }
|