Spring事务隔离级别

事务隔离级别

ISOLATION_DEFAULT

这是一个PlatfromTransactionManager默认的隔离级别,使用数据库默认的事务隔离级别。数据库

ISOLATION_READ_UNCOMMITTED

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

ISOLATION_READ_COMMITTED

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

ISOLATION_REPEATABLE_READ

这种事务隔离级别能够防止脏读,不可重复读。可是可能出现幻像读。它除了保证一个事务不能读取另外一个事务未提交的数据外,还保证了避免不可重复读。code

ISOLATION_SERIALIZABLE

这是花费最高代价可是最可靠的事务隔离级别。事务被处理为顺序执行。除了防止脏读,不可重复读外,还避免了幻像读。orm

什么是脏数据,脏读,不可重复读,幻觉读?

脏读

一个事务修改了一行数据可是没有提交,第二个事务能够读取到这行被修改的数据,若是第一个事务回滚,第二个事务获取到的数据就是脏读。 帮助记忆:写读事务

不可重复读

一个事务读取到一行数据,第二个事务修改了这行数据,第一个事务从新读取证行数据将获得不一样的值。所以称为是不可重复读。 帮助记忆:读写读it

幻读

一个事务按照一个where条件读取全部符合的数据,第二个事务插入了一行数据且刚好也知足这个where条件,第一个事务再以这个where条件从新获取将会获取额外多出来的这一行。 帮助记忆:where insert whereio

相关文章
相关标签/搜索