请稍等 ...
×

采纳答案成功!

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

未提交读和已提交读的区别是什么?

我理解 的大概是这样:

未提交读(脏读) :
最小隔离级别,也就是在事务执行了一些操作,都还没提交的时候,对其他事务也都是可见的。

已提交读(读已提交):
简单来说,就是 事务a 里面插入了一条数据,在事务b里面也会看到最新插入的这条数据,不会重复读原来的数据。

可重复读:
(默认隔离级别),简单来说就是 事务a 插入了一条数据,此时在事务b里面看到的还是原来的数据。也就是在查询的时候还会读到原来的数据。

可串行化:
最高隔离级别,很少用到,除非是对数据有严格要求一致性,并且在可以接受没有并发的前提下。才会考虑。

那 已提交读 跟未提交读,,,,,,不一样都是 在事务a中的骚操作~~ 还没提交, 在事务b里面 就可以看到了?
区别在哪里,辛苦老师帮忙解惑一下。谢谢啦

正在回答 回答被采纳积分+3

1回答

sqlercn 2019-06-15 18:12:56

区别就在于已提交读,只有要事务A提交后,事务B才能读到;而未提交读,在事务A没有提交的时候事务B就可以计到了。

0 回复 有任何疑惑可以回复我~
  • 提问者 就我皮 #1
    很奇怪哦,我的事务等级是READ-COMMITTED。
    但是我在事务A里面:
    插入一条 数据为12 的数字,之前数据库是没12这条数据的。
    然后执行 commit;,提交了事务。
    在到事务 B里面  执行:select * from t where id>7;
    还是在事务b 里面看不到12这个数据哇。
    我的事务A已经提供了,,,,事务B还是没看到。很奇怪。
    回复 有任何疑惑可以回复我~ 2019-06-15 21:12:46
  • 提问者 就我皮 #2
    知道了,,,我的天,我的 B 事务里面,那个连接 的事务等级 竟然是 REPEATABLE-READ。
    
    原来如此。谢谢老师了。
    老师的教程很早前购买的,值得多多推敲。
    回复 有任何疑惑可以回复我~ 2019-06-15 21:15:26
  • sqlercn 回复 提问者 就我皮 #3
    有问题可以随时提问,祝学习愉快
    回复 有任何疑惑可以回复我~ 2019-06-16 22:13:17
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信