1定义编辑
事务指定一个隔离级别,该隔离级别定义一个事务必须与由其他事务进行的资源或数据更改相隔离的程度。隔离级别从允许的并发副作用(例如,脏读或虚拟读取)的角度进行描述。
2事务隔离级别控制以下各项编辑
读取数据时是否占用锁以及所请求的锁类型。
占用读取锁的时间。
引用其他事务修改的行的读取操作是否:
在该行上的排他锁被释放之前阻塞其他事务。
检索在启动语句或事务时存在的行的已提交版本。
读取未提交的数据修改。
选择事务隔离级别不影响为保护数据修改而获取的锁。事务总是在其修改的任何数据上获取排他锁并在事务完成之前持有该锁,不管为该事务设置了什么样的隔离级别。对于读取操作,事务隔离级别主要定义保护级别,以防受到其他事务所做更改的影响。
较低的隔离级别可以增强许多用户同时访问数据的能力,但也增加了用户可能遇到的并发副作用(例如脏读或丢失更新)的 数量。相反,较高的隔离级别减少了用户可能遇到的并发副作用的类型,但需要更多的系统资源,并增加了一个事务阻塞其他事务的可能性。应平衡应用程序的数据 完整性要求与每个隔离级别的开销,在此基础上选择相应的隔离级别。最高隔离级别(可序列化)保证事务在每次重复读取操作时都能准确检索到相同的数据,但需 要通过执行某种级别的锁定来完成此操作,而锁定可能会影响多用户系统中的其他用户。最低隔离级别(未提交读)可以检索其他事务已经修改、但未提交的数据。 在未提交读中,所有并发副作用都可能发生,但因为没有读取锁定或版本控制,所以开销最少。
控制隔离数据以供一个进程使用并防止其它进程干扰的程度的事务属性。设置隔离级别定义了 SQL Server 会话中所有 SELECT 语句的默认锁定行为。
read uncommitted | 0 未提交读
将查询的隔离级别指定为 0。
可以读脏数据
read committed | 1 已提交读
将查询的隔离级别指定为 1。
幻像读:一事务对数据进行了新增操作,另一事务两次查询的数据不一致
repeatable read | 2 可重复读
将查询的事务隔离级别指定为 2。
serializable | 3 可序列化
将查询的隔离级别指定为 3。
执行效率慢(我遇到过一种情况,用时是隔离级别1的30倍),使用时慎重
SNAPSHOT
当读取数据时,可以保证读操作读取的行是事务开始时可用的最后提交版本。
这意味着这种隔离级别可以保证读取的是已经提交过的数据,并且可以实现可重复读,
SQL Server 2005以后的版本支持。
下表显示了不同隔离级别允许的并发副作用。
未提交读
|
是
|
是
|
是
|
已提交读
|
否
|
是
|
是
|
可重复读
|
否
|
否
|
是
|
快照
|
否
|
否
|
否
|
可序列化
|
否
|
否
|
否
|
相关推荐
Hibernate 事务隔离级别 深入探究 在 Hibernate 中,事务隔离级别是指数据库系统提供的一种机制,以解决并发事务带来的问题。为了确保数据库的可靠性和一致性,Hibernate 提供了四种事务隔离级别,分别是 ...
查询:默认事务隔离级别 mysql> select @@tx_isolation;当前会话的默认事务隔离级别 mysql> select @@session.tx_isolation;当前会话的默认事务隔离级别 mysql> select @@global.tx_isolation;全局的事务隔离级别
• InnoDB实现了SQL92标准中的四种隔离级别 (1)读未提交:select不加锁,可能出现读脏; (2)读提交(RC):普通select快照读,锁select /update /delete 会使用记录锁,可能出现不可重复读; (3)可重复读(RR):普通...
数据库的隔离级别,数据库的隔离级别,数据库的隔离级别,数据库的隔离级别
介绍数据库事务的四种隔离级别,比较不同隔离级别的区别和影响
数据库事务和隔离级别
Mysql的四种隔离级别 Mysql的四种隔离级别 Mysql的四种隔离级别
数据库事务的四种隔离级别的特点描述,他们的使用热度,以及各种锁在隔离级别下的释放时机。
本文档介绍了spring事务隔离级别的使用及详解
GBase 8s隔离级别
DB2 inforcenter上的隔离级别介绍
隔离级别定义了事务与事务之间的隔离程度。隔离级别定义了事务与事务之间的隔离程度。
GBase8s_隔离级别.docx
事务传播特性&事务隔离级别 详细的事务传播特性&事务隔离级别
对四种隔离级别有较深的解释.... 很好的 参考文档
spring事务的传播特性和事务隔离级别
java事务传播特性&事务隔离级别...
MySQL的四种事务隔离级别 1、脏读 2、不可重复读 3、幻读
SQLSERVER事务隔离级别的实验研究.pdf
有关JDBC事务 JTA事务 传播特性 隔离级别等等