我想问下,我使用同一个sql.db 去开启很多协程执行sql。和单线程跑 sql。为什么协程快那么多??
// 单线程。
now := time.Now() //6.1172755s
for i := 0; i <= 100; i++ {
var temp tms.LogisticsOrder
temp, err = lDao.FindOrderById(2964)
if err != nil {
break
}
}
if err != nil {
fmt.Println(err)
}
//开启协程。
now := time.Now() //372.6668ms
list, err := pkg.StartRoutine(time.Second*100, lDao.FindOrderById, params, 100) // 里面开启100个携程
if err != nil {
fmt.Println(err)
}
fmt.Println(time.Since(now))
一个花了6s多,一个只花了372ms。为什么呢? 我不是在协程里面开的db 也就是这100个协程公用同一个db 。按常理来说他们的速度不可能差这么多啊!
有没有吊大的,讲解一下,求求了!!!!
有疑问加站长微信联系(非本文作者))

常见的DB库支持线程池或go程池。然后你多协程访问时与数据库建立了多个连接。然后数据库支持多线程并发访问的,消耗时间就少了