数据库是一个共享资源,应该允许多个用户程序并行地存取数据,当对数据库进行并行操作时,有可能出现数据不一致的情况。

并行操作:在单处理机系统中,事务的并行执行实际上是这些并行事务的操作轮流交叉进行。

为保证事务并发执行的正确,必须要有一定的调度手段以保障事务并发执行中一事务执行时不受其他事务的影响。并发控制就是要用正确的方式调度并发操作,使一个用户事务的执行不受其他事务的干扰,从而避免造成数据的不一致性。

并发控制的主要技术是封锁(locking)、时间戳(Timestamp)和乐观控制法。封锁是实现并发控制的一个非常重要的技术,
所谓封锁就是事务T在对某个数据对象(表、记录等)操作之前,先向系统发出请求,对其加锁。加锁后事务T就对该数据对象有了一定的控制,在事务T释放它的锁之前,其他的事务不能存取或更新此数据对象。封锁一般由DBMS自动执行。

最基本的封锁模式有两种
排它锁(eXclusive Locks,简称X锁)和共享锁(Share Locks,简称S锁)。

排它锁又称写锁。若事务T对数据对象A加上X锁,则只允许T读取和修改A,其他任何事务都不能再对A加任何类型的锁,直到T释放A上的锁。这就保证了其他事务在T释放A上的锁之前不能再读取和修改A。

共享锁又称为读锁。若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这就保证了其他事务可以读A,但在T释放A上的S锁之前不能修改A。
  书山有路勤为径,学海无涯苦作舟,学习是一个积累的过程,希望我们共同进步,同时写的有问题的地方,希望大家指出!

什么是并发控制?并发控制技术的原理,最基本的分锁模式(排他锁,共享锁)相关推荐

  1. Java并发编程学习 + 原理分析(建议收藏)

    总结不易,如果对你有帮助,请点赞关注支持一下 微信搜索程序dunk,关注公众号,获取博客源码 Doug Lea是一个无私的人,他深知分享知识和分享苹果是不一样的,苹果会越分越少,而自己的知识并不会因为 ...

  2. 拍卖源码java_Java并发的AQS原理详解

    原文:https://juejin.im/post/5c11d6376fb9a049e82b6253 每一个 Java 的高级程序员在体验过多线程程序开发之后,都需要问自己一个问题,Java 内置的锁 ...

  3. 数据库锁的详解, 共享锁, 更新锁, 排它锁, 意向锁, 加锁原理

    一,锁的种类 1.共享锁--Shared lock 又称读锁(S锁),共享锁不阻塞其他事务的读操作,但阻塞写操作,同一数据对象A可以共存多个共享锁,这被称为共享锁兼容. 当T1为数据对象A加上共享锁后 ...

  4. mysql读写分离主从原理、事务隔离级别及使用、锁表和锁行场景、乐观锁和悲观锁、lock锁和sychronized区别及使用自己学习之后总结和参考一些博客感觉系统了解了

    synchronized与Lock的区别 两者区别: 1.首先synchronized是java内置关键字,在jvm层面,Lock是个java类: 2.synchronized无法判断是否获取锁的状态 ...

  5. 数据库 并发更新之乐观锁和悲观锁

    文章目录 1. 问题引出 2. 数据库悲观锁解决并发更新 3. 数据库乐观锁解决并发更新 4. 乐观锁 CAS 的 ABA 问题 5. 拓展思考 5.1. 悲观锁和排他锁.乐观锁和 CAS 分别有什么 ...

  6. 深入剖析基于并发AQS的(独占锁)重入锁(ReetrantLock)及其Condition实现原理

    [版权申明]未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) http://blog.csdn.net/javazejian/article/details/75043422 出自[zejian ...

  7. 【数据库】MySQL事务并发、MVCC原理及实现

    文章目录 ACID 隔离性分为四个级别 数据库事务并发可能出现的问题 读已提交等级下解决脏读办法 可重复读解决不可重复读 MySQL 是如何解决幻读的 快照读和当前读 那什么又是悲观锁呢 MySQL ...

  8. Java 并发编程-不懂原理多吃亏(送书福利)

    作者 | 加多 关注阿里巴巴云原生公众号,后台回复关键字"并发",即可参与送书抽奖! ** 导读:并发编程与 Java 中其他知识点相比较而言学习门槛较高,从而导致很多人望而却步. ...

  9. Java并发编程—AQS原理分析

    目录 一.AQS原理简述 二.自定义独占锁及共享锁 三.锁的可重入性 四.锁的公平性 五.惊群效应 AQS全称AbstractQueuedSynchronizer,它是实现 JCU包中几乎所有的锁.多 ...

最新文章

  1. MDaemon 10.1.2 通过Webclient发邮件时,提示“发邮件时发生错误
  2. Python学习教程:Python爬虫抓取技术的门道
  3. 谈谈数据库中MyISAM与InnoDB区别
  4. oracle 取当天日期减一天 应该如何写
  5. nginx配置:支持phpfastcgi,nginx和php-cgi通信,部分nginx常量解释
  6. 细说GIT分布式版本控制器
  7. Linux死锁检测-Lockdep
  8. Javaweb家政服务管理系统的设计与实现
  9. 利用FbinstTool+大白菜u盘工具,制作多系统启动U盘【转】
  10. 夜神模拟器安装fiddler证书
  11. 十二个“一”的人物对比--《雪中悍刀行》
  12. 如何将Windbg设置为异常捕获默认程序?
  13. 升级Cloudera Manager 5 到最新版本(官方文档翻译)
  14. 冒死推荐一些值得推荐的 Java 练手项目
  15. 大学毕业4年-回顾和总结 10 -资金账务系统的架构设计(产品视角+技术视角)(图文并茂)
  16. 1024啊、终于等到了
  17. matlab数组使用方法
  18. 在网页中画ICON图标
  19. Premiere小清新风格满屏文字排版PR模板MOGRT
  20. 计算机实验1.数字波形生成器

热门文章

  1. spring 获取cookies_springMVC操作cookie和session
  2. ftp shell lcd不起作用
  3. 楼层标高怎么引上去_【强烈推荐】工程图纸怎么看?
  4. python手机销售系统详细设计_数据库详细设计文档 .doc
  5. 北理工计算机博士怎么样,北京理工大学在职博士的含金量怎么样
  6. 如何通过c语言获取ipv6邻居表,急求在vc++6.0中获取IPV6地址的方法,高手请进,谢谢!!...
  7. iphone屏蔽系统更新_苹果iphone手机屏蔽烦人的系统更新弹窗提醒!
  8. 共享x轴,使用双y轴
  9. c++ 判断数学表达式有效性_高考数学大题如何quot;保分quot;?学霸教你六大绝招!...
  10. c语言建立线性表(顺序储存,链式储存,循环,双向)全