同时多次执行一条mysql的update语句

背景:程序中可能存在同时运行同一条sql语句的可能性,比如多台机器同时运行一个服务,再异步回调中,可能会多台机器同时update数据库中内容,测试是否会产生影响?

程序如下:

func testMysql() {
fmt.Println("requestid:", this.RequestId)
    videoTableName1 := "table name"
    var sqlUpdate_str string = fmt.Sprintf("update %s set `status` = 1, `process_time` = ? where `requestId` = ? and status = 0;", videoTableName1)
    var err_update error
    var row_count int64
    var err_affected error
    tx, pErr := this.VideoDb.Prepare(sqlUpdate_str)
    if pErr != nil {
fmt.Println("PrepareErr:", pErr)
    }

    if update_row, err_update_exec := tx.Exec(string(time.Now().Format("2006-01-02 15:04:05")), this.RequestId); err_update_exec != nil {
        err_update = err_update_exec
        fmt.Println("err_update_exec:", err_update)
    } else if row_count, err_affected = update_row.RowsAffected(); err_affected != nil {
        err_update = err_affected
       fmt.Println("err_affected:", err_update)
    } else if row_count == 0 {
         fmt.Println("row_count is 0")
    } else if row_count > 0 {
        fmt.Println("row_count:", row_count)
    }

}
 

主函数中同时起110个协程调用该函数:

    for ii:=0;ii<110;ii++ {
        go this.testMysql()
    }
执行结果为:

requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
requestid: 1577682332665
row_count: 1
 

结果,只有一条会执行成功,其余不会产生影响。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值