mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-07-13 16:34:35 +08:00
- 为 SQLServer 连接池保留 1 条空闲连接,减少反复冷连接开销 - 复用 Oracle/OceanBase 的默认空闲连接常量,其他默认数据库池策略保持不变 - 新增连接池行为测试,覆盖 SQLServer 复用与默认池关闭 idle 连接
41 lines
1023 B
Go
41 lines
1023 B
Go
package db
|
|
|
|
import (
|
|
"database/sql"
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
const (
|
|
defaultSQLMaxOpenConns = 4
|
|
defaultSQLMaxIdleConns = 1
|
|
defaultSQLConnMaxLifetime = 30 * time.Minute
|
|
defaultSQLConnMaxIdleTime = 30 * time.Second
|
|
)
|
|
|
|
func configureSQLConnectionPool(db *sql.DB, dbType string) {
|
|
if db == nil {
|
|
return
|
|
}
|
|
switch strings.ToLower(strings.TrimSpace(dbType)) {
|
|
case "sqlite", "duckdb":
|
|
return
|
|
case "oracle", "oceanbase":
|
|
db.SetMaxOpenConns(defaultSQLMaxOpenConns)
|
|
db.SetMaxIdleConns(defaultSQLMaxIdleConns)
|
|
db.SetConnMaxIdleTime(defaultSQLConnMaxIdleTime)
|
|
db.SetConnMaxLifetime(defaultSQLConnMaxLifetime)
|
|
return
|
|
case "sqlserver":
|
|
db.SetMaxOpenConns(defaultSQLMaxOpenConns)
|
|
db.SetMaxIdleConns(defaultSQLMaxIdleConns)
|
|
db.SetConnMaxIdleTime(defaultSQLConnMaxIdleTime)
|
|
db.SetConnMaxLifetime(defaultSQLConnMaxLifetime)
|
|
return
|
|
}
|
|
db.SetMaxOpenConns(defaultSQLMaxOpenConns)
|
|
db.SetMaxIdleConns(0)
|
|
db.SetConnMaxIdleTime(defaultSQLConnMaxIdleTime)
|
|
db.SetConnMaxLifetime(defaultSQLConnMaxLifetime)
|
|
}
|