gorm链接mysql的初始化配置和连接池的使用
1. mysql的初始化配置
1 2 | dsn := fmt.Sprintf( "%s:%s@tcp(%s:%d)/%s?%s" , user, passwd, host, port, db, other) //db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})// MySQl 驱动程序提供了 一些高级配置 可以在初始化过程中使用<br>db, err := gorm.Open(mysql.New(mysql.Config{<br> DSN: dsn,<br> DefaultStringSize: 256, // string 类型字段的默认长度<br> DisableDatetimePrecision: true, // 禁用 datetime 精度,MySQL 5.6 之前的数据库不支持<br> DontSupportRenameIndex: true, // 重命名索引时采用删除并新建的方式,MySQL 5.7 之前的数据库和 MariaDB 不支持重命名索引<br> DontSupportRenameColumn: true, // 用 `change` 重命名列,MySQL 8 之前的数据库和 MariaDB 不支持重命名列<br> SkipInitializeWithVersion: false, // 根据当前 MySQL 版本自动配置<br>}), &gorm.Config{<br> // 使用CreateBatchSize 选项初始化 GORM 时,所有的创建& 关联 INSERT 都将遵循该选项<br> CreateBatchSize: 1000,<br> // 全局模式:执行任何 SQL 时都创建并缓存预编译语句,可以提高后续的调用速度<br> PrepareStmt: true,<br> // 注意 QueryFields 模式会根据当前 model 的所有字段名称进行 select。<br> //QueryFields: true,<br>}) |
2. 连接池的使用,GORM 使用 database/sql 维护连接池
1 2 | sqlDb, _ := db.DB() defer sqlDb.Close() // 关闭链接// 对于中小型 web 应用程序,我通常使用以下设置作为起点,然后根据负载测试结果和实际吞吐量级别进行优化。<br>// SetMaxIdleConns: 设置空闲连接池中链接的最大数量<br>sqlDb.SetMaxIdleConns(25)<br>// SetMaxOpenConns: 设置打开数据库链接的最大数量<br>sqlDb.SetMaxOpenConns(25)<br>// SetConnMaxLifetime: 设置链接可复用的最大时间<br>sqlDb.SetConnMaxLifetime(5 * time.Minute) |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)