连接池的作用真的可以去保护数据库
在没有设置连接池之前:
db, err := sql.Open("mysql", "root:123456@/twiter_scheme?charset=utf8&loc=Local")
if err != nil {
fmt.Println("open database error,err=", err)
}
//db.SetMaxOpenConns(20)
//db.SetMaxIdleConns(5)
intchan:=make(chan int,100)
for i := 0; i < 100; i++ {
go func(i int) {
userId:=i
for m:=0;m<100;{
_, err := db.Exec("insert into Max_Connection_Try(userId) values(?)",userId)
if err != nil{
fmt.Println("insert failed,",err)
//return err
}
intchan<-m
m=m+1
}
//rows, _ := db.Exec(mSql)
//rows.Close() //这里如果不释放连接到池里,执行5次后其他并发就会阻塞
fmt.Println("第 ge", i)
}(i)
}
for i:=0;i< 100;{
//fmt.Println(i)
<-intchan
fmt.Println(i)
i=i+1
}
报错
设置连接池之后
一切都normal了