采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
在看到老师演示脏读可能产生的实际问题是,看到老师在设置balance = 900 +200 时产生了疑问,这样设置修改值当然会是1100。既然当前Session读取到的是未提交的值900,应该可以用 balance = balance + 200 ,得到的也会是 1100 的结果吗?
同学好,这里主要是方便演示,脏读的时候,比如说线程1去修改某个数据但是没提交,而这个数据被线程2读取了,就是脏读,此时线程2读入程序的数据是线程1修改后的数据(900),实际线程1没修改,而线程2照着1的结果去处理了,就会产生错误。
非常感谢!
但是我在Navicat上,模拟脏读的情况时候,在事务一回滚后,事务二读取到未提交的数据后,继续执行更新操作,最后提交后的值,仍然是事务二按照事务以回滚后的值进行的操作,虽然出现了脏读但并没有逻辑上的错误,是因为存储引擎自动避免了吗?
正解,所以咱们只能从程序里模拟,因为像这种场景存储引擎在操作的时候会避免的,除非是程序读到数据直接进行update
登录后可查看更多问答,登录/注册
招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航
1.8k 27
2.7k 22
1.2k 15
1.4k 14
1.3k 14