2019独角兽企业重金招聘Python工程师标准>>>

在MySQL中的行级锁,表级锁,页级锁中介绍过,行级锁是Mysql中锁定粒度最细的一种锁,行级锁能大大减少数据库操作的冲突。行级锁分为共享锁和排他锁两种,本文将详细介绍共享锁及排他锁的概念、使用方式及注意事项等。

共享锁(Share Lock)

共享锁又称读锁,是读取操作创建的锁。其他用户可以并发读取数据,但任何事务都不能对数据进行修改(获取数据上的排他锁),直到已释放所有共享锁。

如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能加排他锁。获准共享锁的事务只能读数据,不能修改数据。

用法

SELECT ... LOCK IN SHARE MODE;

在查询语句后面增加LOCK IN SHARE MODE,Mysql会对查询结果中的每行都加共享锁,当没有其他线程对查询结果集中的任何一行使用排他锁时,可以成功申请共享锁,否则会被阻塞。其他线程也可以读取使用了共享锁的表,而且这些线程读取的是同一个版本的数据。

排他锁(eXclusive Lock)

共享锁又称写锁,如果事务T对数据A加上排他锁后,则其他事务不能再对A加任任何类型的封锁。获准排他锁的事务既能读数据,又能修改数据。

用法

SELECT ... FOR UPDATE;

在查询语句后面增加FOR UPDATE,Mysql会对查询结果中的每行都加排他锁,当没有其他线程对查询结果集中的任何一行使用排他锁时,可以成功申请排他锁,否则会被阻塞。

意向锁

InnoDB还有两个表锁:

意向共享锁(IS):表示事务准备给数据行加入共享锁,也就是说一个数据行加共享锁前必须先取得该表的IS锁

意向排他锁(IX):类似上面,表示事务准备给数据行加入排他锁,说明事务在一个数据行加排他锁前必须先取得该表的IX锁。

意向锁是InnoDB自动加的,不需要用户干预。

对于insert、update、delete,InnoDB会自动给涉及的数据加排他锁(X);对于一般的Select语句,InnoDB不会加任何锁,事务可以通过以下语句给显示加共享锁或排他锁。

共享锁:SELECT ... LOCK IN SHARE MODE;

排他锁:SELECT ... FOR UPDATE;

转载于:https://my.oschina.net/u/3991012/blog/3040513

MySQL中的共享锁与排他锁相关推荐

  1. mysql排他锁和共享锁视频_分享MySQL 中的共享锁和排他锁的用法

    在 MySQL 中的行级锁.表级锁和页级锁中,咱们介绍过,行级锁是 MySQL 中锁定粒度最细的一种锁,行级锁能大大减少数据库操作的冲突.行级锁分为共享锁和排他锁两种,本文将详细介绍共享锁和排他锁的概 ...

  2. 一文搞懂 mysql 中的共享锁、排他锁、悲观锁、乐观锁及使用场景

    目录 一.常见锁类型 二.Mysql引擎介绍 三.常用引擎间的区别 四.共享锁与排他锁 五.排他锁的实际应用 六.共享锁的实际应用 七.死锁的发生 八.另一种发生死锁的情景 九.死锁的解决方式 十.意 ...

  3. mysql 事务排他锁_[数据库事务与锁]详解六: MySQL中的共享锁与排他锁

    注明: 本文转载自http://www.hollischuang.com/archives/923 在MySQL中的行级锁,表级锁,页级锁中介绍过,行级锁是Mysql中锁定粒度最细的一种锁,行级锁能大 ...

  4. Mysql中的共享锁和排他锁

    一.前言   刚开始学习MySQL中锁的时候,网上一查出来一堆,什么表锁.行锁.读锁.写锁.悲观锁.乐观锁等等等,直接整个人就懵了.好多文章都尽量把很多锁给列举一遍,生怕写少了内容不够丰富,有的连死锁 ...

  5. mysql 的独占锁和排它锁_数据库中的共享锁与排他锁

    摘要: 能修改数据.为什么要加锁很多人都知道,锁是用来解决并发问题的,那么什么是并发问题呢?并发情况下,不加锁会有什么问题呢?拿生活中的洗手间举例子,每个洗手间都会有一个门,并且是可以上锁的,当我们进 ...

  6. mysql排他锁怎么用_MySQL 中的共享锁和排他锁的用法

    在 MySQL 中的行级锁.表级锁和页级锁中,咱们介绍过,行级锁是 MySQL 中锁定粒度最细的一种锁,行级锁能大大减少数据库操作的冲突.行级锁分为共享锁和排他锁两种,本文将详细介绍共享锁和排他锁的概 ...

  7. mysql 排它锁_Mysql共享锁、排他锁、悲观锁、乐观锁

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

  8. MySQL数据库的共享锁和排他锁

    MySQL数据库的锁,按照作用范围划分为: 行级锁.页级锁和表级锁,行级锁是锁定粒度最细的一种锁,能大大减少数据库操作的冲突.行级锁又分为共享锁和排他锁两种,本文将详细介绍共享锁和排他锁的概念.使用方 ...

  9. Java中的共享锁和排他锁(以读写锁ReentrantReadWriteLock为例)

    重要声明:本人之前对java中的读写锁也不是非常了解,用的也不是很多,尤其在读写锁的策略原理一块没有深究过,本篇文章是在学习[玩转Java并发工具,精通JUC,成为并发多面手]课程后写的,故文章类型选 ...

最新文章

  1. Java 中如何使用 SQL 查询文本
  2. 关于函数形参的一些讨论
  3. GitHub真把代码冰封北极1000年!
  4. P2598-狼和羊的故事【最大流,最小割】
  5. 关于判断函数凸或凹以及最优化的问题
  6. update关联一个视图的时候特别慢_实现一个简单的Vue.js
  7. java session使用_Java互联网架构-高负载集群架构如何解决session一致性问题
  8. 多商户商城小程序系统(附微信抖音小程序商城分销系统源码)
  9. 导论II大作业提交-辩论计时器代码
  10. 英语翻译软件测试简历,如此翻译-2 - Victor's Testing Career - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
  11. softmax函数反向传播
  12. GIAC 2017全球互联网架构大会将于12月在上海举行
  13. 计算机桌面图标管理,桌面图标管理|轻松管理桌面图标
  14. 群晖用php装aria2,在群晖安装整套下载管理工具“Aria2 + AriaNg + File Manager”
  15. 判断Linux环境是否装了NCCL,安装cuDNN和NCCL指南
  16. 2.2 Collections类 (Collections源码解析)
  17. 发现了JMX的好东西,大家分享一下!!
  18. fwrite和fread函数的用法小结
  19. 淘宝u站是什么?淘宝u站是干啥的?
  20. 方舟服务器恐龙等级修改器,方舟服务器恐龙的等级 | 手游网游页游攻略大全

热门文章

  1. ASP.NET: 简要分析Table类的使用
  2. 从蜘蛛网到物联网 这张网人类织了多久?
  3. 回首2013 展望2014
  4. windows 10 64位机器上 安装部署
  5. 如何搞定分库后数据冗余
  6. redux middleware 源码分析
  7. DTP模型之二:(XA协议之二)jotm分布式事务实现
  8. Oracle和Mysql的 != 差异
  9. 在Zf2中实现Controller按照URL自动注册
  10. Linux 日志系统详解