在 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 就会对查询结果中的每行都加排他锁,当没有其他线程对查询结果集中的任何一行使用排他锁时,可以成功申请排他锁,否则会被阻塞。

意向锁(Intention Lock)

意向锁是表级锁,其设计目的主要是为了在一个事务中揭示下一行将要被请求锁的类型。InnoDB 中的两个表锁:

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

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

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

对于INSERT、UPDATE和DELETE,InnoDB 会自动给涉及的数据加排他锁;对于一般的SELECT语句,InnoDB 不会加任何锁,事务可以通过以下语句显式加共享锁或排他锁。

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

排他锁:SELECT ... FOR UPDATE;

mysql排他锁怎么用_MySQL 中的共享锁和排他锁的用法相关推荐

  1. MySQL中的共享锁与排他锁

    2019独角兽企业重金招聘Python工程师标准>>> 在MySQL中的行级锁,表级锁,页级锁中介绍过,行级锁是Mysql中锁定粒度最细的一种锁,行级锁能大大减少数据库操作的冲突.行 ...

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

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

  3. mysql中的锁的指令_mysql中的锁

    MYSQL不同的存储引擎支持不同的锁的机制 MyISAM 支持表锁,InnoDB支持表锁和行锁 表锁,行锁比较 表锁:开销小,加锁快:不会出现死锁:锁定力度大,发生锁冲突概率高,并发度最低 行锁:开销 ...

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

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

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

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

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

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

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

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

  8. 小米id锁状态查询_Mysql中的三类锁,你知道吗?

    点击上方"码农沉思录",选择"设为星标" 优质文章,及时送达 导读 正所谓有人(锁)的地方就有江湖(事务),人在江湖飘,怎能一无所知? 今天不聊江湖,来细说一下 ...

  9. MySQL 与InnoDB 下的锁做朋友 (二)共享锁与排他锁

    前言 没有前言,我们直接看内容. 正文 共享锁(Shared Lock) 共享锁.S锁.读锁   ,都是他的叫法. 而我,喜欢叫他 共享读锁 . A shared (S) lock permits t ...

最新文章

  1. spring框架 AOP核心详解
  2. 对象作为函数参数可能会导致的问题
  3. 分布式与人工智能课程(part6)--第六课
  4. 数万字的0基础React知识大纲一定要藏藏好
  5. 制作openstack-centos镜像
  6. QQ浏览噐怎么拍照识题 QQ浏览器拍照识题教程介绍说明
  7. 我的内核学习笔记16:海思Hi3516平台PWM使用记录
  8. 在linux下挂载ios镜像文件,linux下挂载iso镜像文件
  9. 12306验证码识别V1.5
  10. KEIL MDK中的RO、RW和ZI DATA理解及KEIL中ROM和RAM使用大小计算
  11. 利用云片网提供的API发送短信
  12. 个人征信报告有哪些版本?
  13. MySQL有哪些“饮鸩止渴”提高性能的方法?
  14. 戴尔笔记本耳机插着没反应?
  15. 品牌做小红书投放,究竟选择KOL还是KOC?
  16. single-shot detection(SSD)目标检测算法详解——(一看就懂系列!!!)
  17. Gruobi多目标规划
  18. 物联网毕设选题 - 单片机智能远程宠物喂养系统(物联网 esp8266 stm32)
  19. 我的世界服务器地皮系统,我的世界服务器怎么创建地皮世界
  20. perl 常用模块使用例子

热门文章

  1. package.json 中的 browser、module、main 字段使用探索
  2. 服务器中如何检查端口是否开放
  3. 重磅:蚂蚁借呗全面上征信了
  4. 记:combotree中getValue和getText问题
  5. 跨平台SSH软件-Termius
  6. Facebook推出自家游戏平台Gameroom
  7. 130道基础OJ编程题之: 47 ~ 57 道
  8. Windows环境下Graphviz的安装
  9. Debian 官方源换为国内的源的操作方法
  10. C语言宏定义、宏函数、内置宏与常用宏