Golang(Go语言)是一种静态强类型、编译型、并发型的编程语言。MySQL是一种关系型数据库管理系统。长连接(Long Connection)是指客户端与服务器之间建立一个持久的TCP连接,可以在多个请求之间共享这个连接,而不是每次请求都建立一个新的连接。
以下是一个使用Golang和MySQL长连接的简单示例:
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
"log"
"time"
)
var db *sql.DB
func init() {
var err error
db, err = sql.Open("mysql", "user:password@tcp(127.0.0.1:3306)/dbname")
if err != nil {
log.Fatal(err)
}
// 设置连接池参数
db.SetMaxOpenConns(10) // 最大打开连接数
db.SetMaxIdleConns(5) // 最大空闲连接数
db.SetConnMaxLifetime(time.Minute * 5) // 连接的最大生命周期
err = db.Ping()
if err != nil {
log.Fatal(err)
}
}
func main() {
rows, err := db.Query("SELECT id, name FROM users")
if err != nil {
log.Fatal(err)
}
defer rows.Close()
for rows.Next() {
var id int
var name string
err = rows.Scan(&id, &name)
if err != nil {
log.Fatal(err)
}
fmt.Println(id, name)
}
err = rows.Err()
if err != nil {
log.Fatal(err)
}
}
SetConnMaxLifetime
,定期发送心跳包保持连接活跃。rows.Close()
或stmt.Close()
。SetMaxOpenConns
和SetMaxIdleConns
参数,确保连接池中有足够的连接。通过以上方法,可以有效解决Golang中使用MySQL长连接时遇到的大部分问题。
领取专属 10元无门槛券
手把手带您无忧上云