Go 在 Linux 的数据库连接优化要点
一 连接池与资源复用
import (
"database/sql"
_ "github.com/go-sql-driver/mysql"
"time"
)
db, err := sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=true")
if err != nil { log.Fatal(err) }
defer db.Close()
db.SetMaxOpenConns(30)
db.SetMaxIdleConns(15)
db.SetConnMaxLifetime(20 * time.Minute)
db.SetConnMaxIdleTime(10 * time.Minute)
if err := db.Ping(); err != nil { log.Fatal("ping:", err) }
上述做法可稳定复用连接、控制并发、降低建连成本,并通过统计指标持续观测与迭代。二 Linux 传输与连接方式优化
user:password@unix(/var/run/mysqld/mysqld.sock)/dbname?charset=utf8mb4&parseTime=true...&timeout=30s&readTimeout=30s&writeTimeout=30s三 SQL 与访问模式优化
四 并发与系统层面注意事项
sysctl -w net.ipv4.tcp_timestamps=1sysctl -w net.ipv4.tcp_tw_recycle=1