您的位置:首页 > 编程语言 > Java开发

spring事物的隔离级别

2017-09-23 00:00 169 查看
如果想了解spring 的隔离级别,首先要明白几个概念

脏读:一事务对数据进行了增删改,但未提交,另一事务可以读取到未提交的数据。如果第一个事务这时候回滚了,那么第二个事务就读到了脏数据。

不可重复读:一个事务中发生了两次读操作,第一次读操作和第二次操作之间,另外一个事务对数据进行了修改,这时候两次读取的数据是不一致的。

幻读:第一个事务对一定范围的数据进行批量修改,第二个事务在这个范围增加一条数据,这时候第一个事务就会丢失对新增数据的修改。

其实我一直喜欢 从系统级别了解一下事物实现的原理,希望有识之士能够帮忙解答?

数据库本身的隔离级别

隔离级别 隔离级别的值 导致的问题

Read-Uncommitted 0 导致脏读

Read-Committed 1 避免脏读,允许不可重复读和幻读

Repeatable-Read 2 避免脏读,不可重复读,允许幻读

Serializable 3 串行化读,事务只能一

Spring中的隔离级别

常量 解释

ISOLATION_DEFAULT 这是个 PlatfromTransactionManager 默认的隔离级别,使用数据库默认的事务隔离级别。另外四个与 JDBC 的隔离级别相对应。

ISOLATION_READ_UNCOMMITTED 这是事务最低的隔离级别,它充许另外一个事务可以看到这个事务未提交的数据。这种隔离级别会产生脏读,不可重复读和幻像读。

ISOLATION_READ_COMMITTED 保证一个事务修改的数据提交后才能被另外一个事务读取。另外一个事务不能读取该事务未提交的数据。

ISOLATION_REPEATABLE_READ 这种事务隔离级别可以防止脏读,不可重复读。但是可能出现幻像读。

ISOLATION_SERIALIZABLE 这是花费最高代价但是最可靠的事务隔离级别。事务被处理为顺序执行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: