MySQL中的共享锁与排他锁
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中的共享锁与排他锁相关推荐
- mysql排他锁和共享锁视频_分享MySQL 中的共享锁和排他锁的用法
在 MySQL 中的行级锁.表级锁和页级锁中,咱们介绍过,行级锁是 MySQL 中锁定粒度最细的一种锁,行级锁能大大减少数据库操作的冲突.行级锁分为共享锁和排他锁两种,本文将详细介绍共享锁和排他锁的概 ...
- 一文搞懂 mysql 中的共享锁、排他锁、悲观锁、乐观锁及使用场景
目录 一.常见锁类型 二.Mysql引擎介绍 三.常用引擎间的区别 四.共享锁与排他锁 五.排他锁的实际应用 六.共享锁的实际应用 七.死锁的发生 八.另一种发生死锁的情景 九.死锁的解决方式 十.意 ...
- mysql 事务排他锁_[数据库事务与锁]详解六: MySQL中的共享锁与排他锁
注明: 本文转载自http://www.hollischuang.com/archives/923 在MySQL中的行级锁,表级锁,页级锁中介绍过,行级锁是Mysql中锁定粒度最细的一种锁,行级锁能大 ...
- Mysql中的共享锁和排他锁
一.前言 刚开始学习MySQL中锁的时候,网上一查出来一堆,什么表锁.行锁.读锁.写锁.悲观锁.乐观锁等等等,直接整个人就懵了.好多文章都尽量把很多锁给列举一遍,生怕写少了内容不够丰富,有的连死锁 ...
- mysql 的独占锁和排它锁_数据库中的共享锁与排他锁
摘要: 能修改数据.为什么要加锁很多人都知道,锁是用来解决并发问题的,那么什么是并发问题呢?并发情况下,不加锁会有什么问题呢?拿生活中的洗手间举例子,每个洗手间都会有一个门,并且是可以上锁的,当我们进 ...
- mysql排他锁怎么用_MySQL 中的共享锁和排他锁的用法
在 MySQL 中的行级锁.表级锁和页级锁中,咱们介绍过,行级锁是 MySQL 中锁定粒度最细的一种锁,行级锁能大大减少数据库操作的冲突.行级锁分为共享锁和排他锁两种,本文将详细介绍共享锁和排他锁的概 ...
- mysql 排它锁_Mysql共享锁、排他锁、悲观锁、乐观锁
一.相关名词 |--表级锁(锁定整个表) |--页级锁(锁定一页) |--行级锁(锁定一行) |--共享锁(S锁,MyISAM 叫做读锁) |--排他锁(X锁,MyISAM 叫做写锁) |--间隙锁( ...
- MySQL数据库的共享锁和排他锁
MySQL数据库的锁,按照作用范围划分为: 行级锁.页级锁和表级锁,行级锁是锁定粒度最细的一种锁,能大大减少数据库操作的冲突.行级锁又分为共享锁和排他锁两种,本文将详细介绍共享锁和排他锁的概念.使用方 ...
- Java中的共享锁和排他锁(以读写锁ReentrantReadWriteLock为例)
重要声明:本人之前对java中的读写锁也不是非常了解,用的也不是很多,尤其在读写锁的策略原理一块没有深究过,本篇文章是在学习[玩转Java并发工具,精通JUC,成为并发多面手]课程后写的,故文章类型选 ...
最新文章
- Java 中如何使用 SQL 查询文本
- 关于函数形参的一些讨论
- GitHub真把代码冰封北极1000年!
- P2598-狼和羊的故事【最大流,最小割】
- 关于判断函数凸或凹以及最优化的问题
- update关联一个视图的时候特别慢_实现一个简单的Vue.js
- java session使用_Java互联网架构-高负载集群架构如何解决session一致性问题
- 多商户商城小程序系统(附微信抖音小程序商城分销系统源码)
- 导论II大作业提交-辩论计时器代码
- 英语翻译软件测试简历,如此翻译-2 - Victor's Testing Career - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
- softmax函数反向传播
- GIAC 2017全球互联网架构大会将于12月在上海举行
- 计算机桌面图标管理,桌面图标管理|轻松管理桌面图标
- 群晖用php装aria2,在群晖安装整套下载管理工具“Aria2 + AriaNg + File Manager”
- 判断Linux环境是否装了NCCL,安装cuDNN和NCCL指南
- 2.2 Collections类 (Collections源码解析)
- 发现了JMX的好东西,大家分享一下!!
- fwrite和fread函数的用法小结
- 淘宝u站是什么?淘宝u站是干啥的?
- 方舟服务器恐龙等级修改器,方舟服务器恐龙的等级 | 手游网游页游攻略大全