请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于脏读产生的实际问题的演示

在看到老师演示脏读可能产生的实际问题是,看到老师在设置balance = 900 +200 时产生了疑问,这样设置修改值当然会是1100。既然当前Session读取到的是未提交的值900,应该可以用 balance = balance + 200 ,得到的也会是 1100 的结果吗?

正在回答

1回答

同学好,这里主要是方便演示,脏读的时候,比如说线程1去修改某个数据但是没提交,而这个数据被线程2读取了,就是脏读,此时线程2读入程序的数据是线程1修改后的数据(900),实际线程1没修改,而线程2照着1的结果去处理了,就会产生错误。

0 回复 有任何疑惑可以回复我~
  • 提问者 why779715974 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2020-08-04 10:08:53
  • 提问者 why779715974 #2
    但是我在Navicat上,模拟脏读的情况时候,在事务一回滚后,事务二读取到未提交的数据后,继续执行更新操作,最后提交后的值,仍然是事务二按照事务以回滚后的值进行的操作,虽然出现了脏读但并没有逻辑上的错误,是因为存储引擎自动避免了吗?
    回复 有任何疑惑可以回复我~ 2020-08-04 10:27:20
  • 翔仔 回复 提问者 why779715974 #3
    正解,所以咱们只能从程序里模拟,因为像这种场景存储引擎在操作的时候会避免的,除非是程序读到数据直接进行update
    回复 有任何疑惑可以回复我~ 2020-08-04 23:52:48
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信