首页 > 试题广场 >

在Spring事务的ISOLATION_REPEATABLE

[单选题]
在Spring事务的ISOLATION_REPEATABLE_READ隔离级别下,有可能出现以下哪种情况(   )
  • 脏读
  • 幻读
  • 不可重复读
  • 都有可能发生
推荐
ISOLATION_REPEATABLE_READ隔离级别下,对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,这种隔离级别可以阻止脏读和不可重复读,但幻读仍有可能发生。
编辑于 2021-10-15 15:00:33 回复(0)
 事务属性的种类:   传播行为、隔离级别、只读和事务超时
a)   传播行为定义了被调用方法的事务边界。

b)   隔离级别
在操作数据时可能带来 3 个副作用,分别是脏读、不可重复读、幻读。为了避免这 3 中副作用的发生,在标准的 SQL 语句中定义了 4 种隔离级别,分别是未提交读、已提交读、可重复读、可序列化。而在 spring 事务中提供了 5 种隔离级别来对应在 SQL 中定义的 4 种隔离级别,如下:
c)    只读
如果在一个事务中所有关于数据库的操作都是只读的,也就是说,这些操作只读取数据库中的数据,而并不更新数据,那么应将事务设为只读模式( READ_ONLY_MARKER  , 这样更有利于数据库进行优化 
因为只读的优化措施是事务启动后由数据库实施的,因此,只有将那些具有可能启动新事务的传播行为 (PROPAGATION_NESTED  PROPAGATION_REQUIRED  PROPAGATION_REQUIRED_NEW) 的方法的事务标记成只读才有意义。
如果使用 Hibernate 作为持久化机制,那么将事务标记为只读后,会将 Hibernate  flush 模式设置为 FULSH_NEVER, 以告诉 Hibernate 避免和数据库之间进行不必要的同步,并将所有更新延迟到事务结束。
d)   事务超时
如果一个事务长时间运行,这时为了尽量避免浪费系统资源,应为这个事务设置一个有效时间,使其等待数秒后自动回滚。与设置“只读”属性一样,事务有效属性也需要给那些具有可能启动新事物的传播行为的方法的事务标记成只读才有意义。

发表于 2021-12-24 07:41:10 回复(38)
脏读:a正在写的同时b在读; 不可重复读:a读,b写,a再读导致数据不一致; 幻读:b在写时a在读,a以为没有。
发表于 2022-03-29 00:40:17 回复(2)
脏读:指当一个事务正在访问数据,并且对数据进行了修改,而这种数据还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据还没有提交那么另外一个事务读取到的这个数据我们称之为脏数据。依据脏数据所做的操作肯能是不正确的。   不可重复读:指在一个事务内,多次读同一数据。在这个事务还没有执行结束,另外一个事务也访问该同一数据,那么在第一个事务中的两次读取数据之间,由于第二个事务的修改第一个事务两次读到的数据可能是不一样的,这样就发生了在一个事物内两次连续读到的数据是不一样的,这种情况被称为是不可重复读。   幻象读:一个事务先后读取一个范围的记录,但两次读取的纪录数不同,我们称之为幻象读(两次执行同一条 select 语句会出现不同的结果,第二次读会增加一数据行,并没有说这两次执行是在同一个事务中)
发表于 2022-07-28 02:22:37 回复(2)
ISOLATION_REPEATABLE_READ隔离级别下,对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,这种隔离级别可以阻止脏读和不可重复读,但幻读仍有可能发生
发表于 2022-06-07 09:30:18 回复(0)
发表于 2025-05-16 14:36:43 回复(1)
可重复读的隔离级别已经解决了脏读和不可重复读的问题,自己的解析和答案都不匹配
发表于 2023-05-31 17:55:31 回复(0)
我记不住隔离级别和传播级别呜呜呜呜呜
发表于 2022-11-23 20:10:26 回复(0)
不知道是不是我考虑偏了,spring的事务是基于数据库的,数据库不支持事务的话,都会出现吧
发表于 2023-10-08 00:48:06 回复(0)
m
发表于 2023-04-27 19:04:55 回复(0)
对于脏读、不可重复读、幻读
有四种隔离级别:分别是读未提交,读已提交,可重复读,可串行化
读未提交无法解决这三个问题,所以我们不用
读已提交RC,能够解决脏读,但是无法解决不可重复读和幻读
可重复读RR:是MySQL的默认隔离级别,可以解决脏读,不可重复读,和大部分的幻读
可串行化:可以解决事务的这三个问题,但是由于事务串行执行了,会导致执行效率非常低
发表于 2024-12-27 08:58:56 回复(0)
cy
发表于 2024-08-21 01:29:42 回复(0)
万一底层的数据库不支持事务呢

发表于 2024-04-09 21:06:18 回复(0)