当前位置:首页 >专题 >Go database/sql 查询、事务与连接池工程实践专题

Go database/sql 查询、事务与连接池工程实践专题
Go database/sql 查询

Go database/sql 查询、事务与连接池工程实践专题

从 sql.DB 到事务、连接池、取消与资源释放
database/sql 是 Go 访问关系型数据库的标准抽象,也是连接池、上下文取消和事务边界的工程基础。本专题从官方 API 出发,串起查询结果生命周期、事务提交回滚、连接池参数、专用连接和 sqlx 扩展,帮助开发者把数据库访问从能运行提升到可观测、可恢复、可上线。

站内 Go 数据库访问实践

按基础查询、事务封装、连接池与异常数据顺序阅读

Go语言实现操作MySQL的基础知识总结
文章

Go语言实现操作MySQL的基础知识总结

介绍 database/sql 与 MySQL 驱动配合使用的基础方式。
golang操作连接数据库实现mysql事务示例
文章

golang操作连接数据库实现mysql事务示例

通过 MySQL 示例说明 Go 数据库连接和事务操作。
golang db事务的统一封装的实现
文章

golang db事务的统一封装的实现

围绕 Begin、提交、回滚和错误处理实现统一事务封装。
golang配制高性能sql.DB的使用
文章

golang配制高性能sql.DB的使用

介绍 sql.DB 连接池参数和高性能使用方式。
Go语言配置数据库连接池的实现
文章

Go语言配置数据库连接池的实现

展示 Go 数据库连接池初始化与参数设置。
golang结合mysql设置最大连接数和最大空闲连接数
文章

golang结合mysql设置最大连接数和最大空闲连接数

说明 MaxOpenConns 与 MaxIdleConns 的配置作用。
go第三方库sqlx操作MySQL及ORM原理
文章

go第三方库sqlx操作MySQL及ORM原理

介绍 sqlx 对 database/sql 的结构体映射和扩展能力。
解决Go语言数据库中null值的问题
文章

解决Go语言数据库中null值的问题

使用 sql.NullString 等类型处理数据库 NULL 值。

常见问题

覆盖 database/sql 上线前最容易踩到的资源和一致性边界

sql.DB 是一条数据库连接吗?

不是。sql.DB 是可并发安全使用的数据库句柄,并在内部管理连接池;应用通常复用一个 DB,而不是每次请求都 Open 和 Close。

Query 返回 Rows 后为什么必须关闭?

Rows 可能持有底层连接和结果集资源。应在确认返回成功后尽早 defer Rows.Close,并处理迭代结束后的 Rows.Err,避免连接长期占用。

事务里应该使用 db 还是 tx 执行 SQL?

事务范围内的所有 SQL 都应使用同一个 tx,包括查询、写入和准备语句;混用 db 可能让操作落到事务外的另一条连接。

连接池参数应该如何设置?

没有通用固定值,应结合数据库最大连接数、实例数量、请求并发、查询耗时和监控数据设置,并观察 WaitCount、WaitDuration、InUse 和空闲连接指标。

微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议隐私政策
返回登录
  • 重置密码