一、脏读、不可重复读、幻象读的区别

 
1、脏读:包含未提交数据的读取。例如,事务 a 更改了某行(数据库已发生更改,但尚未提交,有可能发生回滚),事务 b 在事务 a 提交更改之前读取已更改的行。如果事务 a 回滚更改,则事务 b 读取到了不存在的脏数据
2、不可重复读取:当某个事务(a)不止一次读取同一行,并且一个单独的事务(b)在两次或多次读取之间修改了该行,所以事务(a)每次读取的该行的值都不同。
3、幻象:是指当事务不是独立执行时发生的一种现象。例如当事务(a)对一个表中的数据进行全部修改时,第二个事务(b)向表中插入一行新数据。则事务(a)发现表中还有没修改的数据,如同发生了幻觉一样。
 
 
二、SQL Server 锁类型
 
1、共享锁:用于只读操作(select),锁定共享的资源。共享锁不会阻止其他用户读,但是阻止其他用户的写和修改,以避免脏读
2、更新锁:更新锁是一种意图锁,当一个事务已经请求共享锁后并试图请求一个独占锁的时候发生更新锁。例如当两个事务在几行数据行上都使用了共享锁,并同时试图获取独占锁以执行更新操作时,就发生了死锁,都在等待对方释放共享锁而实现独占锁。更新锁的目的是只让一个事务获得更新锁,防止这种情况发生。
3、独占锁:一次只能有一个独占锁用在一个资源上,并且阻止其他所有的锁包括共享锁。写是独占锁,可以有效的防止“脏读”。
4、意图锁:在使用共享锁和独占锁之前,使用意图锁。从表的层次上产看意图锁,以判断事物能否获取共享锁和独占锁,提供了系统的性能,不需从页或者行上检查。
5、计划锁:Sch-M,Sch-S。对数据库结构改变时用Sch-M,对查询进行编译时使用Sch-S。这两种锁不会阻塞任何事物锁,包括独占锁。
 
三、 .net 提供的数据库事务隔离级别 System.Data.IsolationLevel 枚举用于指定连接的事务锁行为,包含如下枚举:
 
 
成员名称 成员名称 说明
Chaos  混乱 无法改写隔离级别更高的事务中的挂起的更改
ReadUncommitted 未提交读 可以进行脏读,意思是说,不发布共享锁,也不接受独占锁
ReadCommitted 提交读 在正在读取数据时保持共享锁,以避免脏读,但是在事务结束之前可以更改数据,从而导致不可重复的读取或幻象数据
RepeatableRead 可重复读 在查询中使用的所有数据上放置锁,以防止其他用户更新这些数据。防止不可重复的读取,但是仍可以有幻象行
Serializable 可串行读 在DataSet 上放置范围锁,以防止在事务完成之前由其他用户更新行或向数据集中插入行
Snapshot 快照 通过在一个应用程序正在修改数据时存储另一个应用程序可以读取的相同数据版本来减少阻止。表示您无法从一个事务中看到在其他事务中进行的更改,即便重新查询也是如此。
Unspecified 未指定的 正在使用与指定隔离级别不同的隔离级别,但是无法确定该级别。当使用OdbcTransaction 时,如果不设置IsolationLevel 或者将 IsolationLevel 设置为Unspecied,事务将根据基础ODBC驱动程序的默认隔离级别来执行。

c#数据库事务锁类型的更多相关文章

  1. Oracle数据库的锁类型

    Oracle数据库的锁类型 博客分类: oracle   Oracle数据库的锁类型 根据保护的对象不同,Oracle数据库锁可以分为以下几大类:DML锁(data   locks,数据锁),用于保护 ...

  2. 【转】MSSQLServer数据库事务锁机制分析

    锁是网络数据库中的一个非常重要的概念,它主要用于多用户环境下保证数据库完整性和一致性.各种大型数据库所采用的锁的基本理论是一致的,但在具体实现上各有差别.目前,大多数数据库管理系统都或多或少具有自我调 ...

  3. Mysql数据库事务隔离级别

    事务(transaction)是数据库管理系统的执行单位,可以是一个数据库操作(如Select操作)或者是一组操作序列.事务ACID属性,即原子性(Atomicity).一致性(Consistency ...

  4. 3、原生jdbc链接数据库之锁与事务

    一.锁的概念1.作用:是保证数据的一致性,只能一个人修改数据,不能同时多用户修改2.分类:行级锁和表级锁   乐观锁和悲观锁 二.事务1.为了保证数据的一致性和完整性,让数据库的多项操作合并为一个整体 ...

  5. 数据库并发事务控制四:postgresql数据库的锁机制二:表锁 <转>

    在博文<数据库并发事务控制四:postgresql数据库的锁机制 > http://blog.csdn.net/beiigang/article/details/43302947 中后面提 ...

  6. spring学习笔记---数据库事务并发与锁详解

    多事务运行并发问题 在实际应用中,往往是一台(或多台)服务器向无数客户程序提供服务,当服务器查询数据库获取数据时,如果没有采用必要的隔离机制,可能会存在数据库事务的并发问题,下面是一些常见的并发问题分 ...

  7. 多事务运行并发问题spring学习笔记——数据库事务并发与锁详解

    多事务运行并发问题 在实际应用中,往往是一台(或多台)服务器向无数客户程序提供服务,当服务器查询数据库获取数据时,如果没有采用必要的隔离机制,可能会存在数据库事务的并发问题,下面是一些常见的并发问题分 ...

  8. 数据库事务中的隔离级别和锁+spring Transactional注解

    数据库事务中的隔离级别和锁 数据库事务在后端开发中占非常重要的地位,如何确保数据读取的正确性.安全性也是我们需要研究的问题.ACID首先总结一下数据库事务正确执行的四个要素(ACID): 原子性(At ...

  9. [数据库事务与锁]详解五: MySQL中的行级锁,表级锁,页级锁

    注明: 本文转载自http://www.hollischuang.com/archives/914 在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的 ...

随机推荐

  1. mysql表类型导致的 setRollbackOnly() 事务不回滚

    在SpringBoot 中,使用事务非常简单,只需在方法上面加入 @Transactional  注解就可以实现.也可加在类上,此时则类中所有方法都支持事务. 而当我使用下面代码时,发现事务却没有回滚 ...

  2. python数组

    1. 初始化一个具有20个元素,元素的值为 1*1, 2*2, 3*3, ......., n*n的数组 A = [i*i for i in range(1, 20)] print A 2. 初始化一 ...

  3. Vue相关开源项目库汇总

    https://github.com/opendigg/awesome-github-vue http://www.opendigg.com/tags/front-vue README.md 内容 U ...

  4. js 闭包,作用域,this 终结篇(转)

    之前有写过闭包,作用域,this方面的文章,但现在想想当时写的真是废话太多了,以至于绕来绕去的,让新手反而更难理解了,所以就有了此篇文章,也好和闭包,作用域,this告一段落. 第一个问题:什么是闭包 ...

  5. 论文阅读(Lukas Neumann——【ICCV2017】Deep TextSpotter_An End-to-End Trainable Scene Text Localization and Recognition Framework)

    Lukas Neumann——[ICCV2017]Deep TextSpotter_An End-to-End Trainable Scene Text Localization and Recogn ...

  6. WC.exe【C】

    gitee传送门!!!(电脑打不开github,多次尝试未果,决定先用gitee存着先) 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序 ...

  7. flask实战-留言板-Web程序开发流程

    Web程序开发流程 在实际的开发中,一个Web程序的开发过程要设计多个角色,比如客户(提出需求).项目经理(决定需求的实现方式).开发者(实现需求)等,在这里我们假设自己是一个人全职开发.一般来说一个 ...

  8. 用 webpack 创建 vue 项目

    1.安装支持webpack 包 npm i -D  webpack webpack-cli  aspnet-webpack webpack-dev-middleware  webpack-hot-mi ...

  9. 自制操作系统Antz(9)——实现内核 (下) 实现图形化界面

    Antz系统更新地址: https://www.cnblogs.com/LexMoon/category/1262287.html Linux内核源码分析地址:https://www.cnblogs. ...

  10. dataguard从库移动数据文件

    ------------方法1从库移动数据文件路径方法1--------------将表空间offline的方法不行 1.退出日志应用alter database recover managed st ...