MySQL - 行锁 表锁 乐观锁 悲观锁 读锁 写锁

锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足。在DBMS中,可以按照锁的粒度把数据库锁分为行级锁(INNODB引擎)、表级锁(MYISAM引擎)和页级锁(BDB引擎 )。

行锁

锁定整个行数据,开销大,加锁慢,会出现死锁。锁定粒度小,发生锁冲突的概率低,并发度高。

表锁

锁定整个表数据,开销小,加锁快,不会出现死锁。锁定粒度大,发生锁冲突概率高,并发度低。

悲观锁

每次取数据时都认为别人会修改,所以每次取数据的时候都会上锁,这样别人想拿这个数据就会被阻塞,直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。适用于“写多读少”的场景。

乐观锁

每次取数据时都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。适用于“读多写少”的场景,这样可以提高吞吐量。数据库中的write_condition机制就是乐观锁。

共享锁

共享锁指的是对于多个不同的事务,对同一个资源共享同一个锁。相当于对于同一把门,它拥有多个钥匙一样。共享锁也属于悲观锁的一种,通过在执行语句后面加上lock in share mode就加上共享锁了。

posted on 2019-06-14 13:50 Helios_Fz 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/helios-fz/p/11022911.html

MySQL - 行锁 表锁 乐观锁 悲观锁 读锁 写锁相关推荐

  1. MySql事务4种隔离级别以及悲观锁和乐观锁

    前言:在那鬼公司呆着发现自己居然把事务给搞明白了. 缘由:公司做的一个项目在进行首页内容显示的时候发现查询结果特别慢,有时候需要一到五分钟才能显示出结果.于是乎,我就顺着SQL语句查询慢的原因找了下去 ...

  2. [MySQL] mysql 的行级显式锁定和悲观锁

    [MySQL] mysql 的行级显式锁定和悲观锁 隐式和显式锁定: 1.innodb是两阶段锁定协议,隐式锁定比如在事务的执行过程中.会进行锁定,锁只有在commit或rollback的时候,才会同 ...

  3. 【Java锁体系】一、悲观锁和乐观锁

    目录: [Java锁体系]一.悲观锁和乐观锁 [Java锁体系]二.Java中的CAS机制算法 [Java锁体系]三.自旋锁详解 [Java锁体系]四.Synchronized关键字详解 [Java锁 ...

  4. mysql锁总结知乎_Mysql悲观锁乐观锁区别与使用场景

    概念上区别 乐观锁(Optimistic Locking):顾名思义,对加锁持有一种乐观的态度,即先进行业务操作,不到最后一步不进行加锁,"乐观"的认为加锁一定会成功的,在最后一步 ...

  5. mysql乐观和悲观锁实现_mysql实现乐观锁和悲观锁该怎么编写?

    乐观锁和悲观锁相信大家都是知道的,这是java中的基础知识,今天我们就来看看它们两者该如何使用代码实现吧. 乐观锁实现 1).表设计 表task,分别有三个字段id,value.version 2). ...

  6. mysql锁表查询_Mysql upate 更新锁表还是锁行测试

    mysql 学习 主题: -- 查询是否自动提交事务select @@autocommit;--关闭自动提交事务set autocommit = 0;--开启--执行--结束 事务start tran ...

  7. mysql中锁原理及for update悲观锁的详解

    mysql 中有多种多样的锁,今天我们具体分享一下: 一.mysql中乐观锁和悲观锁原理及种类: ​        乐观锁并不是数据库自带的,如果需要使用乐观锁,那么需要自己去实现,一般情况下,我们会 ...

  8. 悲观锁和乐观锁_浅谈数据库悲观锁和乐观锁

    现在我们简单聊一下数据库中的悲观锁和乐观锁. 悲观锁 悲观锁正如其名称,比较悲观.总会认为:每当修改数据时,会有其他线程也会同时修改该数据.所以针对这种情况悲观锁的做法是:读取数据之后就加锁(eg: ...

  9. mysql查询数据会不会锁表_mysql select是否会锁表 ?

    mysql select是否会锁表 ? 有的人说mysql的 select 会锁表 ,有的人说 mysql 的查询不会锁表 . 其他他们都对,没有 ,但是很片面. 其实对于mysql的select 是 ...

  10. Java 独占锁ReentrantLock、读(悲观读)写锁ReentrantReadWriteLock、读(乐观读/悲观读)写锁StampedLock

    1.AbstractQueuedSynchronizer 锁必然要知道AbstractQueuedSynchronizer(AQS),AQS提供了一个框架,用于实现依赖于先进先出(FIFO)等待队列的 ...

最新文章

  1. 基于wayland的linux桌面,揭开Wayland的面纱(二):Wayland应运而生
  2. 《剑指offer》c++版本 13. 机器人的运动范围
  3. [bzoj1547]周末晚会
  4. 【击败时间100%】剑指 Offer 38. 字符串的排列
  5. 基于 bootstrap 字体图标,用纯CSS实现星级评分功能
  6. Oracle 故障整理
  7. 获取当前实例的字段值
  8. 元胞自动机-附代码注释
  9. 小学算术运算测试c语言,c语言小学算术运算测试.doc
  10. Xcode6以后如何用企业证书发布应用
  11. 010Java知识点小结--抽象类、接口
  12. 统计笔记3:statistical inference
  13. matlab 写netcdf,写入 netCDF 属性
  14. Multisim 13-电子线路实验
  15. Spring Boot启动报错问题: The Bean Validation API is on the classpath but no implementation could be found
  16. Unirech:阿里云国际云服务器ecs建站流程
  17. CSS隐藏滚动条并可以滚动内容
  18. 这些全球知名的设计网站,你用过的有哪些?
  19. VUE 学习之parent 选项
  20. C++中的泛型编程有函数模板与类模板

热门文章

  1. 【Oracle】Oracle中使用转义字符
  2. spring@Transactional注解
  3. 电脑Bois中usb模式启动热键
  4. AJAX - 创建XMLHttpRequest 对象
  5. AWR Report and session_cached_cursor
  6. 传输层协议的UDP和TCP
  7. I/O流之缓冲流的文件复制代码及节点流处理数据加密
  8. Jmeter 分布式测试完整实践过程(部署成功)
  9. svm gui安装 matlab,svm_matlab_gui 支持向量机matlab工具箱(含资料及gui模式)用于分类和回归预测 - 下载 - 搜珍网...
  10. Spring MVC拦截器实现用户登录权限验证案例