gorm 如果使用同一个sql.db 去开协程。为什么速度会比单线程跑快很多


本文摘自网络,作者WorkDog,侵删。

我想问下,我使用同一个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 。按常理来说他们的速度不可能差这么多啊!

有没有吊大的,讲解一下,求求了!!!!


相关阅读 >>

手撸Golang Go与微服务 chatserver之2

Go语言怎么将整数转化为浮点数

Golang channel是什么

Go语言操作mysql语言基础知识

Golang判断key是否存在map中的方法

云原生的浪潮下,为什么运维人员适合学习Go语言?

protoc Go插件编写之四 (实现生成自己的proto文件)

2017年最适合Go新手的十本书

分析Go中的类型比较

Golang如何定义一个二维数组

更多相关阅读请进入《Go》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...