事务的隔离级别了解过吗?

Java源码网 1月前 ⋅ 110 阅读 0 下载

事务的隔离级别了解过吗?

1、读未提交(Read Uncommited),该隔离级别允许脏读取,其隔离级别最低;比如事务A 和事务B同时进行,事务A在整个执行阶段,会将某数据的值从1开始一直加到10,然后进行事 务提交,此时,事务B能够看到这个数据项在事务A操作过程中的所有中间值(如1变成2,2变 成3等),而对这一系列的中间值的读取就是未授权读取

2、授权读取也称为已提交读(Read Commited),授权读取只允许获取已经提交的数据。比 如事务A和事务B同时进行,事务A进行+1操作,此时,事务B无法看到这个数据项在事务A操 作过程中的所有中间值,只能看到最终的10。另外,如果说有一个事务C,和事务A进行非常类 似的操作,只是事务C是将数据项从10加到20,此时事务B也同样可以读取到20,即授权读取 允许不可重复读取。

3、可重复读(Repeatable Read)

就是保证在事务处理过程中,多次读取同一个数据时,其值都和事务开始时刻是一致的,因此 该事务级别禁止不可重复读取和脏读取,但是有可能出现幻影数据。所谓幻影数据,就是指同 样的事务操作,在前后两个时间段内执行对同一个数据项的读取,可能出现不一致的结果。在 上面的例子中,可重复读取隔离级别能够保证事务B在第一次事务操作过程中,始终对数据项 读取到1,但是在下一次事务操作中,即使事务B(注意,事务名字虽然相同,但是指的是另一 个事务操作)采用同样的查询方式,就可能读取到10或20;

4、串行化

是最严格的事务隔离级别,它要求所有事务被串行执行,即事务只能一个接一个的进行处理, 不能并发执行。


全部评论: 0

    我有话说: