hibernate之控制并发访问(事务隔离性问题)

来源:互联网 发布:linux搭建cdn 编辑:程序博客网 时间:2024/05/01 17:58
hibernate之控制并发访问(事务隔离性问题)

ANSI SQL标准根据数据库管理系统允许的情况定义了标准的事务隔离性级别。这些情况有:丢失更新,脏读取,不可重复读取,二次丢失更新,幻读
------------------------
1.如果两个事务都更新一个行,然后第二个事务异常终止,就会发生丢失更新,导致两处变化都丢失。这发生在没有实现锁的系统中,此时没有    隔离并发事务。 (丢失更新)
-----
2.如果一个事务读取另一个还没有被提交的事务进行的改变,就发生脏读取。这很危险,因为由其他事务进行的改变随后可能回滚,并且第一个    事务可能编写无效数据。(脏读取)
-----
3.如果一个事务读取一个行两次,并且每次读取不同的状态,就会发生不可重复读。例如,另一个事务可能已经写到这个行,并已在两次读取之    间提交。不可重复读取的一个特殊案例是二次丢失更新问题。想象两个并发事务都读取一个行:一个写到行并提交,然后第二个也写到行并提    交。由第一个事务所做的改变丢失了。如果考虑需要几个数据库事务来完成的应用程序对话,这个问题就特别值得关注。(不可重复读取)
-----
4.幻读发生在一个事务执行一个查询两次,并且第二个结果集包括第一个结果集中不可见的行,或者包括已经删除的行时。(不需要是完全相同的    查询)这种情形是由另一个事务在两次查询执行之间插入或者删除行造成的。(幻读)
原创粉丝点击