go+mysql+pool_golang go-sql-drive mysql连接池的实现

本文介绍了Golang中如何使用内置的连接池功能,通过`sql.Open`初始化数据库连接,并通过`SetMaxOpenConns`和`SetMaxIdleConns`设置最大打开和闲置的连接数,以优化并发性能。通过示例代码展示了如何在HTTP服务中使用连接池执行SQL查询,并提到了数据库连接超时可能导致的问题及其初步解决方案。
摘要由CSDN通过智能技术生成

golang内部自带了连接池功能,刚开始接触golang的时候不了解这个,还自己搞了一个 sql.Open的对象管理池,真的非常囧啊。

sql.Open函数实际上是返回一个连接池对象,不是单个连接。在open的时候并没有去连接数据库,只有在执行query、exce方法的时候才会去实际连接数据库。在一个应用中同样的库连接只需要保存一个sql.Open之后的db对象就可以了,不需要多次open。

golang中关于mysql的增删改查我在前面的一篇文章中有说明了,不了解的小伙们可以先去了解一下:golang连接mysql操作示例增删改查

因为普通程序执行完毕之后资源就会被释放掉,所以这里尝试使用web服务进行演示。

开启web服务

首页先启动一个web服务监听9090端口,比较简单不多做说明。

func startHttpServer() {

http.HandleFunc("/pool", pool)

err := http.ListenAndServe(":9090", nil)

if err != nil {

log.Fatal("ListenAndServe: ", err)

}

}

db对象初始化

声明一个全局的db对象,并进行初始化。

var db *sql.DB

func init() {

db, _ = sql.Open("mysql", "root:@tcp(127.0.0.1:3306)/test?charset=utf8")

db.SetMaxO

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值