go连接mysql大量insert异常_MySql事务在并发情况下出现的异常及解决方法-Go语言中文社区...

数据库并发操作会引发的问题

多个事务背景:MySQL5.6 InnoDB存储引擎,事务隔离级别最低的read uncommited(为了看到各种异常)。

多个事务同时访问数据库时候,会发生下列5类问题,包括3类数据读问题(脏读,不可重复读,幻读),2类数据更新问题(第一类丢失更新,第二类丢失更新):

脏读(dirty read)

A事务读取B事务尚未提交的更改数据,并在这个数据基础上操作。如果B事务回滚,那么A事务读到的数据根本不是合法的,称为脏读。在oracle中,由于有version控制,不会出现脏读。数据库事务隔离级别高于 read commited即可

a7e6462872ddff75986dce9dcdb3bfb9.png

理论库存应当有9个,但由于脏读(T4时查出库存9个即为脏读),现有8个

不可重复读(unrepeatable read)

A事务读取了B事务已经提交的更改(或删除)数据。比如A事务第一次读取数据,然后B事务更改该数据并提交,A事务再次读取数据,两次读取的数据不一样。将数据库事务隔离级别设为repeatable read即可

c80378814daf5780cf5c1e25e642637e.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值