最近在使用go语言的orm做一些数据库的操作,最后发现了一个bug就是invalid connection,所以就去的了解了一下链接池和mysql的超时时间,下面我就用go的orm+mysql来说明(我理解语言都是相通的,原理应该都是一样的)。
在我们要对数据库进行增删改查的时候,第一步就是要去连接数据库
//conn the database
func ConnDb(dbConnString string, dbName string) error {
maxIdle := 50
maxConn := 50
err := orm.RegisterDataBase(dbName, "mysql", dbConnString+"?charset=utf8&loc=Asia%2FShanghai", maxIdle, maxConn)
if err != nil {
util.GLogger.Errorw("in Connect DB", "err", err)
}
return err
}
这里面连接的就是mysql数据库,设置的最大连接池为50,最大空闲连接是50。
而这个连接池主要是做什么的呢?简单的说就是,你要去数据库里面拿数据改数据,你就需要和数据库建立起一个管道,这个就是建立一个网络连接,我们都知道tcp连接是比较耗时的,那么既然已经花了一定时间去建立了这个管道,那么我怎么才能随取随用,而不用丢弃呢?那么连接池就是存放这些已经建立的管道的地方,50这个数值呢,可以简单的理解成最多放50个管道,注意,这个并不是越大越好,因为太大的话会比较占内存,当然了太