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

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驱动程序的默认隔离级别来执行。

转载于:https://www.cnblogs.com/liuxiaoji/p/10690504.html

c#数据库事务锁类型相关推荐

  1. mysql 视图锁_Oracle数据库的锁类型及相关视图

    Oracle数据库的锁类型 根据保护的对象不同,Oracle数据库锁可以分为以下几大类:DML锁(data locks,数据锁),用于保护数据的完整性:DDL锁(dictionary locks,字典 ...

  2. django进阶06数据库事务

    原创:django进阶06数据库事务 锁 1.1:乐观锁: 概念:同一条数据很少会因为并发修改而产生冲突,适用于读多写少的场景. 实现方式:读取一个字段,执行处理逻辑,当需要更新数据时,再次检查该字段 ...

  3. 事务例子_图文详解:数据库事务与锁

    什么是事务(Transaction)? 是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行.事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源 ...

  4. DM数据库事务、锁、多版本机制

    一.事务: 概念:事务是指作为单个逻辑工作单元的一系列操作的集合. (MySQL:一组数据操作执行步骤,这些步骤被视为一个工作单元,用于对多个语句进行分组,可以在多个客户机并发访问同一个表中的数据时使 ...

  5. 5.15 mysql 数据库(数据库/表操作/索引/pymysql/备份与恢复/事务/锁) 学习笔记

    文章目录 1 初始数据库 1)数据库 2)mysql 3)和用户权限相关的 4)基本操作 2 表操作 1)存储引擎 2)表和数据的一些基本操作 3)mysql中的数据类型 4)表的完整性约束 5)修改 ...

  6. JDBC学习总结(二)JDBC操作Blob类型字段高效的批量插入JDBC处理数据库事务将多个SQL看成一个事务执行数据库连接池C3P0DBCPDruidDBUtils工具类实现CRUD

    JDBC学习总结(二)JDBC操作Blob类型字段/高效的批量插入/JDBC处理数据库事务/将多个SQL看成一个事务执行/数据库连接池C3P0/DBCP/Druid/DBUtils工具类实现CRUD ...

  7. 数据库事务的悲观锁和乐观锁

    转载出处:http://www.hollischuang.com/archives/934 在数据库的锁机制中介绍过,数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数 ...

  8. 数据库事务及锁机制介绍

    2019独角兽企业重金招聘Python工程师标准>>> 事务介绍 因为一直使用Spring这种声明式的事务管理,一直以为事务的主要作用是对一个业务方法中多次执行数据库操作的最终提交. ...

  9. MySQL数据库事务中的行级锁,表级锁,页级锁

    锁定用于确保事务完整性和数据库一致性. 锁定可以防止用户读取其他用户正在更改的数据,并防止多个用户同时更改相同的数据. 如果不使用锁定,数据库中的数据可能在逻辑上变得不正确,而针对这些数据进行查询可能 ...

最新文章

  1. ncnn量化学习笔记
  2. 浅析SEO优化分类信息网站优化的三大技巧
  3. auto-sklearn手册
  4. 二十不惑,三十而已|网易互联网人的“焦虑必杀技”
  5. Unicorn - W3C 统一验证工具
  6. 以Blog.Core的方式来打开Abp.vNext
  7. 【转】C#中的命名空间namespace全解
  8. linux hadoop 伪分布,linux配置Hadoop伪分布安装模式
  9. Opatch java 路径_Windows平台下opatch apply报错:OUI-67073
  10. 开机时不输入用户名密码直接登录
  11. 国内完全免费的电子图书下载网址
  12. java环境安装教程_java环境搭建教程
  13. 李阳疯狂英语助教工作总结
  14. cdr多页面排版_CDR排版须掌握三大功能 值得收藏
  15. 测试网络连接速度 http://www.phoenixtv.com.cn/home/fhkp/testspeed.htm
  16. 华三交换机 流量镜像
  17. 反弹socks代理。
  18. Word中更新图表所有的域
  19. Windows下如何查看十几G的日志文件
  20. 一周电商零售news汇总(1.26-1.31)

热门文章

  1. CSS→代码语法、优先级、选择器、权值、字体文本、颜色、长度值、块状内联元素、盒模型、布局模型→层模型绝对相对定位、div排列、水平居中
  2. matlab离散点包络,求大神指点绘制空间内散点图的包络面,,,散点程序如下
  3. 用SQL表达内连接和外链接
  4. 私有继承与保护继承(protected 成员)
  5. bzoj 2351: [BeiJing2011]Matrix(二维Hash)
  6. bzoj 1616: [Usaco2008 Mar]Cow Travelling游荡的奶牛(BFS)
  7. centos系统下搭建网站环境 php+mysql+apache
  8. 安卓应用间的数据共享:ContentProvider、ContentResolver全解
  9. python网络爬虫系列教程——Scrapy框架应用全解
  10. 记录WIN10下ISE14.7安装和关联modelsim10.1的安装要点