悲观锁

总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。

乐观锁

总是假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号机制和CAS算法实现。乐观锁适用于多读的应用类型,这样可以提高吞吐量。

悲观锁和乐观锁的区别

悲观锁和乐观锁是数据库用来保证数据并发安全防止更新丢失的两种方法,。悲观锁和乐观锁大部分场景下差异不大,一些独特场景下有一些差别,一般我们可以从如下几个方面来判断:

  • 1.响应速度:如果需要非常高的响应速度,建议采用乐观锁方案,成功就执行,不成功就失败,不需要等待其他并发去释放锁

  • 2.冲突频率:如果冲突频率非常高,建议采用悲观锁,保证成功率,如果冲突频率大,乐观锁会需要多次重试才能成功,代价比较大

  • 3.重试代价:如果重试代价大,建议采用悲观锁

两种锁的使用场景

从上面对两种锁的介绍,我们知道两种锁各有优缺点,不可认为一种好于另一种,

  • 像乐观锁适用于写比较少的情况下(多读场景),即冲突真的很少发生的时候,这样可以省去了锁的开销,加大了系统的整个吞吐量。
  • 但如果是多写的情况,一般会经常产生冲突,这样反倒是降低了性能,所以一般多写的场景下用悲观锁就比较合适。

乐观锁 与 悲观锁 总结相关推荐

  1. [初级]深入理解乐观锁与悲观锁

    2019独角兽企业重金招聘Python工程师标准>>> 在数据库的锁机制中介绍过,数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔 ...

  2. 乐观锁与悲观锁——解决并发问题

    引言   在多用户环境中,在同一时间可能会有多个用户更新相同的记录,这会产生冲突.这就是著名的并发性问题. 典型的冲突有: 丢失更新:一个事务的更新覆盖了其它事务的更新结果,就是所谓的更新丢失.例如: ...

  3. [精选]MySQL的各种锁(表锁,行锁,悲观锁,乐观锁,间隙锁,死锁)

    不少人在开发的时候,应该很少会注意到这些锁的问题,也很少会给程序加锁(除了库存这些对数量准确性要求极高的情况下),即使我们不会这些锁知识,我们的程序在一般情况下还是可以跑得好好的.因为数据库隐式帮我们 ...

  4. 乐观锁和悲观锁,可重入锁和不可重入锁(1)

    乐观锁和悲观锁,可重入锁和不可重入锁(1) 前言 感觉有一段时间没有写博客了呢.还是再接再厉吧,适当程度的总结能让我自己能够更加深入地巩固和理解自己所学习的一切. 还有,我很懒,而且我还是比较喜欢写日 ...

  5. Mysql共享锁、排他锁、悲观锁、乐观锁及其使用场景

    一.相关名词 |--表级锁(锁定整个表) |--页级锁(锁定一页) |--行级锁(锁定一行) |--共享锁(S锁,MyISAM 叫做读锁) |--排他锁(X锁,MyISAM 叫做写锁) |--悲观锁( ...

  6. 深入理解乐观锁与悲观锁

    在数据库的锁机制中介绍过,数据库管理系统(DBMS)中的并发控制的任务是确保在多个事务同时存取数据库中同一数据时不破坏事务的隔离性和统一性以及数据库的统一性. 乐观并发控制(乐观锁)和悲观并发控制(悲 ...

  7. 【转】数据库的乐观锁和悲观锁

    [转]数据库的乐观锁和悲观锁 有时候为了得到最大的性能,一般数据库都有并发机制,不过带来的问题就是数据访问的冲突.为了解决这个问题,大多数数据库用的方法就是数据的锁定.所以说,悲观锁和乐观锁主要是用来 ...

  8. 乐观锁、悲观锁简单分析,回忆旧(新)知识...

    2019独角兽企业重金招聘Python工程师标准>>> 今天被人问了下乐观锁和悲观锁,突然在脑子里好模糊,但又感觉以前很熟悉的东西竟然忘得这么干净.所以恶补加记录一下. 乐观锁和悲观 ...

  9. **Java有哪些悲观锁的实现_面试4连问:乐观锁与悲观锁的概念、实现方式、场景、优缺点?...

    推荐阅读: 数据库面试4连问:分库分表,中间件,优缺点,如何拆分? 终极手撕之架构大全:分布式+框架+微服务+性能优化,够不够? 消息队列面试,你能顶得住面试官这波10大连环炮的攻势吗? 01 乐观锁 ...

  10. 悲观锁和乐观锁_乐观锁和悲观锁 以及 乐观锁的一种实现方式-CAS

    悲观锁 总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞知道它拿到锁.传统的关系型数据库里面就用到了很多的这种锁机制,比如行锁,表锁等 ...

最新文章

  1. MPB:扬州大学王梦芝组-​​反刍动物瘤胃原虫的分离培养与形态学分析
  2. Paddle 网络中的Tensor 数据结构
  3. JQuery笔记(二)jq常用方法animate()
  4. Linux中如何用命令打开文件夹
  5. asp.net等项目编译失败的原因之不能写入
  6. 一看就会——蓝桥杯 试题 基础练习 完美的代价——贪心法,21行代码AC
  7. 这可能就是写代码的乐趣吧,你,也一定会爱上写代码的!
  8. Django的MEDIA_ROOT和STATIC_ROOT
  9. 我38岁,从外企技术高管到失业在家,只因为做错了这件事
  10. python 整数转字符串_16、atoi-整数字符串转整数-leetcode8-中等
  11. 【我的相册】一瓶解千愁
  12. 十种可以成为知己的异性
  13. Hyperledger Fabric教程(1)--Hyperledger Fabric 老版本 1.1.0 快速部署安装
  14. 深刻理解Binder机制
  15. “IT 变革” 云 = 美国道富银行砍掉了850个IT职位
  16. C轮融资已完成!思迈特软件领跑国内BI生态赋能,产品、服务竿头一步
  17. Android设置沉浸式
  18. yujin_ocs/yocs_velocity_smoother速度平滑velocity_smoother_nodelet源码解读
  19. HANA 01 HANA中的JOIN和NODE
  20. 虚拟机架设冒险岛服务器,冒险岛单机版V139虚拟机版+视频安装教程+139客户端+登录器...

热门文章

  1. zabbix监控系统时间的问题
  2. Apache配置详解(一)
  3. Web Hacking 101 中文版 十八、内存(一)
  4. Eclipse中Program arguments和VM arguments的说明
  5. 自编Win8风格Android音乐播放器应用源码(单机版)
  6. eclipse中JS文件乱码
  7. 开源cms系统:We7 CMS 2.5版内测版发布啦!
  8. Office2010翻译无处不在
  9. MySQL索引优化分析
  10. 不要再写这样的神级代码了!