mysql数据库怎么利用golang语言进行连接

  

mysql数据库怎么利用golang语言进行连接?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

golang中连接mysql数据库,需要使用一个第三方类库github.com/go-sql-driver/mysql,在这个类库中就实现了mysql的连接池,并且只需要设置两个参数就可以实现

一般连接mysql首先需要调用sql.Open函数,但是此时并没有真正的去连接mysql,而是只创建了一个Db的对象而已。当执行查询或者是执行方法时,才会去真正的连接数据库。

默认情况下。每次执行sql语句,都会创建一条tcp连接,执行结束就会断掉连接,但是会保留两条连接闲置。当下次再执行sql时,先用闲置的连接,不够的时候再去创建连接。

当设置了Db类下的这两个参数,就可以真正的实现连接池了。

<代码> db.SetMaxOpenConns(10)
<代码> db.SetMaxIdleConns(5)

SetMaxOpenConns(10)是设置的最大连接数,也就是甭管你多少并发,只能最多创建10条tcp连接,还有要注意的一点是,当执行完sql,连接转移到行对象上,如果行不关闭,这条连接不会被放回池里,其他并发获取不到连接会被阻塞住。
SetMaxIdleConns(5)是设置的执行完闲置的连接,这些就算是执行结束了sql语句还是会保留着的

测试的流程是这样的,首先在代码中并发100次执行sql,开一个窗口不停的netstat查看3306端口看tcp连接的情况,可以看到最大就10条tcp连接,执行完后会有5条连接保持住,开一个窗口看tcpdump中3306端口的数据请求情况,在闲置连接的时候,会每10秒传递数据给mysql,使得闲置连接保持住。

<强> mysqlClient。去

先要拉取一下github包,去github.com/go-sql-driver/mysql

主要包
  
  导入(
  “数据库/sql"
  “fmt"
  “time"
  
  _“;github.com/go-sql-driver/mysql"
  )
  
  函数main () {
  db, _:=sql.Open (“mysql",“根:123456 @tcp (127.0.0.1:3306)/gocron")
  db.SetMaxOpenConns (10)
  db.SetMaxIdleConns (5)//连接数据库查询
  我:=0;我& lt;100;我+ + {
  func (int) {
  从user" mSql:=皊elect *;
  行,_:=db.Query (mSql)
  rows.Close()//这里如果不释放连接到池里,执行5次后其他并发就会阻塞
  fmt.Println(“第“,我)
  }(我)
  
  }
  
  为{
  time . sleep (time.Second)
  }
  }

<>强开一个窗口不停的netstat

,而真正的;清晰;日期;netstat -altupn | grep 3306 | grep客户机;睡眠1;做

 mysql数据库怎么利用golang语言进行连接

<强>开一个窗口tcpdump看闲置连接的请求情况,每隔15秒请求一次数据

tcpdump - lo端口3306 vv

 mysql数据库怎么利用golang语言进行连接

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

mysql数据库怎么利用golang语言进行连接