1 / 3
文档名称:

标准SQL规范中定义四个事务隔离级别(精).docx

格式:docx   大小:15KB   页数:3页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

标准SQL规范中定义四个事务隔离级别(精).docx

上传人:飞行的振中 2022/6/3 文件大小:15 KB

下载得到文件列表

标准SQL规范中定义四个事务隔离级别(精).docx

相关文档

文档介绍

文档介绍:标准SQL标准中定义四个事务隔离级别(精)
标准SQL标准中定义四个事务隔离级别(精)
1 / 31
标准SQL标准中定义四个事务隔离级别(精)
标准SQL标准中定义的四个事务隔离级别
在标准SQL标准中,定义了4个事务隔离级别,标准SQL标准中定义四个事务隔离级别(精)
标准SQL标准中定义四个事务隔离级别(精)
1 / 31
标准SQL标准中定义四个事务隔离级别(精)
标准SQL标准中定义的四个事务隔离级别
在标准SQL标准中,定义了4个事务隔离级别,不同的隔离级别对事务的处理不
同:
◆未授权读取(ReadUncommitted:允许脏读取,但不允许更新丧失。如果一个事务已经开始写数据,那么另外一个数据那么不允许同时进行写操作,但允许其他事务读此行数据。该隔离级别可以通过“排他写锁〞实现。
◆授权读取(ReadCommitted:允许不可重复读取,但不允许脏读取。这可以通过“瞬间共享读锁〞和“排他写锁〞实现。读取数据的事务允许其他事务继续访问该行数据,但是未提交的写事务将会禁止其他事务访问该行。
◆可重复读取(RepeatableRead禁:止不可重复读取和脏读取,但是有时可能出现幻影数据。这可以通过“共享读锁〞和“排他写锁〞实现。读取数据的事务将会禁止写事务(但允许读事务,写事务那么禁止任何其他事务。
◆序列化(Serializable:提供严格的事务隔离。它要求事务序列化执行,事务只能一个接着一个地执行,但不能并发执行。如果仅仅通过“行级锁〞是无法实现事务序列化的,必须通过其他机制保证新插入的数据不会被刚执行查询操作的事务访问到。
隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也越大。对于多数应用程序,可以优先考虑把数据库系统的隔离级别设为ReadCommitted,它能够防止脏读取,而且具有较好的并发性能。尽管它会导致不可重复读、虚读和第二类丧失更新这些并发问题,在可能出现这类问题的个别场合,可以由应用程序采用悲观锁或乐观锁来控制。
通过前面的介绍已经知道,通过选用不同的隔离等级就可以在不同程度上防止前面所提及的在事务处理中所面临的各种问题。所以,数据库隔离级别的选取就显得尤为重要,在选取数据库的隔离级别时,应该注意以下几个处理的原那么:
首先,必须排除“未授权读取〞因,为在多个事务之间使用它将会是非常危险的。事务的回滚操作或失败将会影响到其他并发事务。第一个事务的回滚将会完全将其他事务的操作去除,甚至使数据库处在一个不一致的状态。很可能一个已回滚为结束的事务对数据的修改最后却修改提交了,因为“未授权读取〞允许其他事务读取数据,最后整个错误状态在其他事务之间传播开来。
其次,绝大局部应用都无须使用“序列化〞隔离(一般来说,读取幻影数据并不是一个问题,此隔离级别也难以测量。目前使用序列化隔离的应用中,一般都使用悲观锁,这样强行使所有事务都序列化执行。
剩下的也就是在“授权读取〞和“可重复读取〞之间选择了。我们先考虑可重复读取。如果所有的数据访问都是在统一的原子数据库事务中,此隔离级别将消除一个事务在另外一个并发事务过程中覆盖数据的可能性(第二个事务更新丧失问题。这是一个非常重要的问题,但是使用可重复读取并不是解决问题的唯一途径。
假设使用了“版本数据〞,Hibernate会自动使