锁就是防止其他事务访问指定的资源的手段。锁是实现并发控制的主要方法,是多个用户能够同时操纵同一个数据库中的数据而不发生数据不一致现象的重要保障。一般来说,锁可以防止脏读、不可重复读和幻觉读。

(1)脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是脏数据,依据脏数据所做的操作可能是不正确的。

(2)不可重复读是指在一个事务内,多次读同一数据。在这个事务还没有结束时,另外一个事务也访问该同一数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改,那么第一个事务两次读到的的数据可能是不一样的。这样就发生了在一个事务内两次读到的数据是不一样的,因此称为是不可重复读。

(3)幻觉读是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,就好象发生了幻觉一样。

转载于:https://www.cnblogs.com/petermsdn/archive/2008/07/23/1249395.html

锁的用处及脏读、不可重复读和幻觉读的概念相关推荐

  1. 什么是脏数据,脏读,不可重复读,幻觉读?

    什么是 脏读,不可重复读,幻觉读? 脏读: 指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,      另外一个事务也访问这个数据,然后使用了这个数据.因为这个数 ...

  2. 脏读、重复读、幻读;

    脏读 所谓脏读是指一个事务中访问到了另外一个事务未提交的数据,如下图: 如果会话 2 更新 age 为 10,但是在 commit 之前,会话 1 希望得到 age,那么会获得的值就是更新前的值.或者 ...

  3. 什么是脏读,不可重复读,幻觉读?

    脏读:了解这个之前,首先要了解什么是脏数据.  脏数据是指源系统中的数据不在给定的范围内或对于实际业务毫无意义,或是数据格式非法,以及在源系统中存在不规范的编码和含糊的业务逻辑.   脏读:在数据库技 ...

  4. 数据库的四种隔离级别及对应解决的脏读、不可重复读、幻读问题

    数据库的四种隔离级别 数据库事务的隔离级别有4种,由低到高分别为Read uncommitted .Read committed .Repeatable read .Serializable .而且, ...

  5. 如何防止脏读、不可重复读、幻读

    [转自]http://blog.csdn.net/gaoshan_820822/article/details/4582561 锁就是防止其他事务访问指定的资源的手段.锁是实现并发控制的主要方法,是多 ...

  6. 面试题之数据库脏读、不可重复读、幻读

    一.简介 本文将总结脏读.不可重复读.幻读的概念以及一些区别,希望通过这些比较能够帮助小伙伴们加深对脏读.不可重复读.幻读的理解. 二.脏读 脏读: 指一个事务中访问到了另外一个事务未提交的数据(通俗 ...

  7. mysql 乐观锁 脏读_mysql 丢失更新1和2、脏读、不可重复读和幻读 事务隔离级别 悲观锁 乐观锁...

    事务是现代关系型数据库的核心之一.在多个事务并发操作数据库(多线程.网络并发等)的时候,如果没有有效的避免机制,就会出现以下几种问题: ( 第一类丢失更新 A事务撤销时,把已经提交的B事务的更新数据覆 ...

  8. mysql事务隔离级别之锁实现原理,脏读、不可重复读、幻读出现原因及解决方案

    mysql事务隔离级别原理 观看了很多网上的博客,挺令人伤心,很难找到想要的答案... 一:所需知识 1,mysql中的锁 1.1,读锁(共享锁) 规则:若事务1对数据对象A加上读锁,则事务1只能读A ...

  9. SQL Server 中的事务与事务隔离级别以及如何理解脏读, 未提交读,不可重复读和幻读产生的过程和原因...

    原本打算写有关 SSIS Package 中的事务控制过程的,但是发现很多基本的概念还是需要有 SQL Server 事务和事务的隔离级别做基础铺垫.所以花了点时间,把 SQL Server 数据库中 ...

最新文章

  1. 清华理工男,跳了7年舞,来华为一年当了PL,这什么小哥哥
  2. 成功解决.ReadTimeoutError: HTTPSConnectionPool(host=‘pypi.tuna.tsinghua.edu.cn‘, port=443): Read timed o
  3. 【ORACLE 高可用】使用GOLDENGATE 配置Oracle-MySQL的异构复制
  4. VS Code 1.35 发布!全新 logo 来临,远程开发进入稳定版
  5. AI研究的盲点:无解的神经网络内在逻辑
  6. 实战07_SSM整合ActiveMQ支持多种类型消息
  7. linux裁剪内核和移植,嵌入式Linux内核裁剪及移植的研究与实现
  8. C++之指针探究(九):结构体指针
  9. mysql数据库BigInt数据类型和实体对象中BigInteger,Long类型的冲突
  10. Office Web Apps开放测试
  11. PreferenceScreen使用
  12. deepin 惠普打印驱动安装
  13. Python 命名规范
  14. Oracle中存储过程中变量的声明与赋值
  15. 中小型局域网上网管理组网方案
  16. 【技法操作】UI界面设计,用PS绘制闹钟页面教程
  17. [51Nod]NOIP2018提高组省一冲奖班模测训练(一)题解
  18. 微生物群落的circos图怎么画_微生物群落分析
  19. 查看linux发行版
  20. 精通WordPress设计与开发:第3章 本地开发WordPress

热门文章

  1. unity3d android 回调,大神们,请问unity和Android交互的时候,为什么总是调用不到方法...
  2. mysql mydumper_mysql数据库备份之mydumper
  3. ping 不通 华为三层交换机vlan_华为交换机常用的三种vlan划分方法,一文了解清楚vlan...
  4. python functools.reduce_Python-functools模块(reduce、partial、lru_cache)
  5. 东芝2505扫描软件_东芝P300机械硬盘上膛体验:内存大了,小姐姐再也不愁无处安放了...
  6. 获取元素到页面顶部的距离_jQuery 操作元素综合案例
  7. 计算机技术在环境中的好处,浅谈计算机技术在德育现代化中的作用
  8. [转]Python UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position 的解决办法...
  9. LSM树——放弃读能力换取写能力,将多次修改放在内存中形成有序树再统一写入磁盘...
  10. 【亲测】在网页上查找接口,Network--XHR,出来的每个Name都是后台的一个接口