关于Sql Server 事务隔离级别,百度百科是这样描述的

隔离级别:一个事务必须与由其他事务进行的资源或数据更改相隔离的程度。隔离级别从允许的并发副作用(例如,脏读或虚拟读取)的角度进行描述。

隔离级别共5种:

read uncommitted | 0 未提交读
read committed | 1 已提交读
repeatable read | 2 可重复读
serializable | 3 可序列化
snapshot 快照(2005版本以后新加)

以下面的图为例,在事务A中会根据条件读取TABLE1,且读两次,事务B中会对同样的表TABLE1同样的条件进行UPDATE,在对表数据更新时会获得排他锁直至事务提交,

这样在事务A中如果设置不同的隔离级别就会有不同的效果。

1、隔离级别设置为read uncommitted,允许脏读,不管事务B何时Commit,事务A中的SELECT语句2都可以读出数据(有可能是脏数据,因事务B可能会ROLLBACK),且与语句1的数据不同。

2、隔离级别设置为read committed,不允许脏读,但允许“不可重复读”,即事务A中可以多次读,不管事务B中是否Commit,如果SELECT语句3执行时事务B还没有Commit,读取结果与SELECT 语句1相同,反之则不同。

3、隔离级别设置为repeatable read,不允许脏读,也不允许“不可重复读”,但允许”幻读“,示例中,事务A中的SELECT语句3的执行一定要等到事务B Commit之后才能执行成功。

4、隔离级别设置为serializable,这是最高级别的隔离,串行化读,事务只能一个一个执行,避免了脏读、不可重复读、幻读。

5、隔离级别设置为snapshot ,读取数据时,可以保证读操作读取的行是事务开始时可用的最后提交版本。这意味着这种隔离级别可以保证读取的是已经提交过的数据,并且可以实现可重复读,也能确保不会幻读。

理解Sql Server 事务隔离层级(Transaction Isolation Level)的更多相关文章

  1. mysql事务之一:MySQL数据库事务隔离级别(Transaction Isolation Level)及锁的实现原理

    一.数据库隔离级别 数据库隔离级别有四种,应用<高性能mysql>一书中的说明: 然后说说修改事务隔离级别的方法: 1.全局修改,修改mysql.ini配置文件,在最后加上 1 #可选参数 ...

  2. MySQL数据库事务隔离级别(Transaction Isolation Level)

    转自: http://www.cnblogs.com/zemliu/archive/2012/06/17/2552301.html  数据库隔离级别有四种,应用<高性能mysql>一书中的 ...

  3. SQL Server 事务隔离级别详解

    标签: SQL SEERVER/MSSQL SERVER/SQL/事务隔离级别选项/设置数据库事务级别 SQL 事务隔离级别 概述 隔离级别用于决定如果控制并发用户如何读写数据的操作,同时对性能也有一 ...

  4. 【转】SQL Server 事务隔离级别详解

    SQL 事务隔离级别 概述 隔离级别用于决定如果控制并发用户如何读写数据的操作,同时对性能也有一定的影响作用. 步骤 事务隔离级别通过影响读操作来间接地影响写操作:可以在回话级别上设置事务隔离级别也可 ...

  5. SQL Server 事务隔离级别

    一.事务隔离级别控制着事务的如下表现: 读取数据时是否占用锁以及所请求的锁类型. 占用读取锁的时间. 引用其他事务修改的行的读操作是否: 在该行上的排他锁被释放之前阻塞其他事务. 检索在启动语句或事务 ...

  6. sql server 事务隔离性 snapshot 、read committed说明

    一. --该 read committed 默认事务隔离级别 在 systemuser修改事务未完成时 select * from [SystemUser] where id=62; 该语句是不可读取 ...

  7. SQL Server事务隔离级别

    事务 定义 事务是作为单个逻辑工作单元执行的一系列操作. 一个逻辑工作单元必须有四个属性,称为原子性.一致性.隔离性和持久性 (ACID) 属性,只有这样才能成为一个事务. 一个事务可以包含多个操作. ...

  8. Sql Server 事务隔离级别的查看及更改

    根据自身 Sql Server 的情况来自定义 事务隔离级别,将会更加的满足需求,或提升性能.例如,对于逻辑简单的 Sql Server,完全可以使用 read uncommitted 模式,来减少死 ...

  9. Transcation And Lock--SQL SERVER 事务隔离级别

    SQL SERVER 事务隔离级别:1.未提交读(READ UNCOMMITED)    允许脏读,读取数据时不加共享锁,与使用WITH(NOLOCK)结果相同2.已提交读    不允许脏读,读取数据 ...

随机推荐

  1. centOS和windows7双系统下重装windows后恢复centOS引导

    电脑原本是windows7和centOS双系统,后来重装windows系统后,发现没有centOS引导,于是重新恢复centOS引导. 1.官网下载centos系统镜像CentOS-7-x86_64- ...

  2. 为python.exe或者ipython.exe添加环境变量

    在pycharm下可以把Module包添加到interpreter paths,从而实现import Module. 而若直接使用ipython,或者python.exe时,它们的环境变量并没有包含M ...

  3. 什么是AOP面向切面编程

    什么是AOP 连接地址:http://blog.csdn.net/moreevan/article/details/11977115/ AOP(Aspect-OrientedProgramming,面 ...

  4. [js]this和call.call

    JavaScript 的一大特点是,函数存在「定义时上下文」和「运行时上下文」以及「上下文是可以改变的」这样的概念. https://www.cnblogs.com/coco1s/p/4833199. ...

  5. (转)redis分布式锁-SETNX实现

    Redis有一系列的命令,特点是以NX结尾,NX是Not eXists的缩写,如SETNX命令就应该理解为:SET if Not eXists.这系列的命令非常有用,这里讲使用SETNX来实现分布式锁 ...

  6. xxx.app已损坏,打不开.你应该将它移到废纸篓-已解决

    到这种情况可能不是你的软件包的问题,可能是macos安全设置问题. 解决办法就是: 1.系统偏好设置... -> 安全性与隐私-->修改为任何来源 2.serria里面没有“任何来源”这一 ...

  7. [LeetCode] 607. Sales Person_Easy tag: SQL

    Description Given three tables: salesperson, company, orders.Output all the names in the table sales ...

  8. windows server 2008 R2如何更换系统界面语言/中文换英文

    下面我们来讲解一下如何将中文系统转化成日文.韩文.英文等其它语言界面的系统. 以windows server 2008 R2系统中文变英文为例: 1.到微软官方下载:Windows Server 20 ...

  9. phpstorm 用法

    同时打开多个工程,多项目并存 File -> settings -> Directories -> Add Content Root 中添加目录 快速模板 输入fore,按下Tab, ...

  10. Asp.netCore之安装centos7 资料收集

    虚拟机的安装和centos的安装看博友的文章:https://www.cnblogs.com/zhaopei/p/netcore.html ifconfig 在centons中用终端写命令比较费劲,可 ...