程序员

Spring事务级别

2014-05-30  本文已影响146人  UncleYee

事务级别涉及到到问题主要有脏读,不可重复读,幻读,这里分别描述一下,并对相应的事务级别进行整理。

对应这些问题,基于元数据的 Spring 声明性事务主要提供这么几种事务级别:

 1. DEFAULT 使用数据库设置的隔离级别 ( 默认 ) ,由 DBA 默认的设置来决定隔离级别 .

 2. READ_UNCOMMITTED 会出现脏读、不可重复读、幻读 ( 隔离级别最低,并发性能高 )

 3. READ_COMMITTED  会出现不可重复读、幻读问题(锁定正在读取的行)

 4. REPEATABLE_READ 会出幻读(锁定所读取的所有行)

 5. SERIALIZABLE 保证所有的情况不会发生(锁表)

这里总结一下:

一般事务级别设定为REPEATABLE_READ 就OK了,能满足绝大部分业务场景,如果涉及到表中多行数据操作的业务,则要考虑SERIALIZABLE。但是SERIALIZABLE本事效率极低(锁表),很少直接把事务级别调整到它。

上一篇 下一篇

猜你喜欢

热点阅读