关于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. CentOS7下Docker的安装与使用

    前言 简介 Docker 是一个开源的应用容器引擎,基于 Go 语言,并遵从 Apache2.0 协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到 ...

  2. python中的0,None,False,空容器

    在Python中,None.空列表[].空字典{}.空元组().0等一系列代表空和无的对象会被转换成False.除此之外的其它对象都会被转化成True. 1.0等于False,这点要注意. 2.空的l ...

  3. MySQL数据库之part1

    一.初始数据库 链接:http://www.cnblogs.com/linhaifeng/articles/7126847.html 一.MySQL介绍 1.MySQL是什么 MySQL是一个关系型数 ...

  4. Python 全栈开发十一 深浅拷贝

    深浅拷贝 深浅拷贝的前提: 相等和相同的关系 深浅拷贝针对的是列表等可变的数据类型. 深浅拷贝在普通的列表没有什么意义,只有在嵌套列表,或其他嵌套数据类型才有意义. a = "aaa&quo ...

  5. pycharm tips

    批量更改变量名,就在该变量名上shift+f6 ../data 两个点,就是上一级目录,一个点就是当前目录 unhashable type: 'list' 使用set进行去重 a = [1,2,2,3 ...

  6. 【LeetCode每天一题】Combination Sum II(组合和II)

    Given a collection of candidate numbers (candidates) and a target number (target), find all unique c ...

  7. TensorFlow读取CSV数据

    代码来源于官方文档,做了一些小小的调整: # -*- coding:utf-8 -*- import tensorflow as tf filename_queue = tf.train.string ...

  8. 安装Cuda9.0+cudnn7.3.1+tensorflow-gpu1.13.1

    我的安装版本: win10 x64 VS2015 conda python 3.7 显卡 GTX 940mx Cuda 9.0 cudnn v7.3.1 Tensorflow-gpu 1.13.1 1 ...

  9. 制作正式版10.11 OS X El Capitan 安装U盘(优盘)

    一.准备工作:1.准备一个 8GB 或以上容量的 U 盘,确保里面的数据已经妥善备份好(该过程会抹掉 U 盘全部数据)2.从官网Appstore下载下来的 “安装 OS X El Capitan”,当 ...

  10. vue中动态绑定class

    我用的element-ui primary默认是这个颜色,ui设计的是这个颜色所以我们先要重写 .el-button--primary的样式 因为默认是没有勾选的所有事灰色所以下面重写样式为灰色 .e ...