Golang 数据库连接池的问题

metian 发布于 2013/08/13 16:48
阅读 4K+
收藏 0
Go
我有一个程序需要很长时间才运行完, 里面有很多地方都需要对MYSQL进行操作。。 我现在用的是mymysql模块 每个查询(select)或者insert 都先 db := mysql.New(...)
然后再
db.Close()
这样每次打开、关闭 再打开再关闭,好像性能不好。
有没有办法所有地方的mysql操作都用一个 db连接 ?

我毫尝试写一个全局的db,但是当程序运行一会儿就会报错:panic: packet sequence error

package common

import (
	"errors"
	//"fmt"
	"github.com/ziutek/mymysql/mysql"
	_ "github.com/ziutek/mymysql/native" // Native engine
	//	"os/exec"
	"strconv"
	"time"
)

var dbConnection mysql.Conn 

func GetMysqlConnection(dbname string) (mysql.Conn, error) {

	if dbConnection != nil {
		return dbConnection, nil
	}
	defaultConfig := MysqlConnectionConfigList[index]
	db := mysql.New("tcp", "", "127.0.0.1:3306", "root", "123456", dbname)
	db.Register("set names utf8")
	db.SetTimeout(10 * time.Second)
	err := db.Connect()

	if err != nil {
		return nil, err
	}
	dbConnection = db
	return db, nil
}

加载中
1
f
f223156
go标准库的database/sql本身带连接池, 把mymysql作为sql.Open的driver来连, 其他什么都不用做
返回顶部
顶部