Mysql-InnoDB 锁学习
锁类型
行级锁
锁模式只有LOCK_S 和LOCK_X,其他的 FLAG 用于锁的描述,如前述 LOCK_GAP、LOCK_REC_NOT_GAP 以及 LOCK_ORDINARY、LOCK_INSERT_INTENTION 四种描述。
LOCK_REC_NOT_GAP
LOCK_GAP
LOCK_ORDINARY(Next-Key Lock)
LOCK_INSERT_INTENTION
static const byte lock_compatibility_matrix[5][5] = {
/** IS IX S X AI /
/ IS / { TRUE, TRUE, TRUE, FALSE, TRUE},
/ IX / { TRUE, TRUE, FALSE, FALSE, TRUE},
/ S / { TRUE, FALSE, TRUE, FALSE, FALSE},
/ X / { FALSE, FALSE, FALSE, FALSE, FALSE},
/ AI / { TRUE, TRUE, FALSE, FALSE, FALSE}
};
对于GAP类型(锁对象建立在supremum上或者申请的锁类型为LOCK_GAP)且申请的不是插入意向锁时,无需等待任何锁,这是因为不同Session对于相同GAP可能申请不同类型的锁,而GAP锁本身设计为不互相冲突;
LOCK_ORDINARY 或者LOCK_REC_NOT_GAP类型的锁对象,无需等待LOCK_GAP类型的锁;
LOCK_GAP类型的锁无需等待LOCK_REC_NOT_GAP类型的锁对象;
任何锁请求都无需等待插入意向锁。
表级锁
InnoDB的表级别锁包含五种锁模式:LOCK_IS、LOCK_IX、LOCK_X、LOCK_S以及LOCK_AUTO_INC锁,锁之间的相容性遵循数组lock_compatibility_matrix中的定义。
InnoDB表级锁的目的是为了防止DDL和DML的并发问题。但从5.5版本开始引入MDL锁后,InnoDB层的表级锁的意义就没那么大了,MDL锁本身已经覆盖了其大部分功能。
意向锁是表级别的,IS和IX锁之间相互并不冲突,但与表级S/X锁冲突。
在对记录加S锁或者X锁时,必须保证其在相同的表上有对应的意向锁或者锁强度更高的表级锁。
Mysql-InnoDB 锁学习相关推荐
- MySQL InnoDB锁
2019独角兽企业重金招聘Python工程师标准>>> InnoDB与MyISAM的最大不同有两点:一是支持事务(TRANSACTION):二是采用了行级锁.行级锁与表级锁本来就有许 ...
- MySQL InnoDB锁机制全面解析分享
写在前面:在设计新零售供应链wms(仓库管理系统)库存模块时,为了防止并发情况对库存的影响,查阅了一些资料,对InnoDB锁机制有了更全面的了解,在此做出分享,如有疏漏望不吝指正,愿共同进步!(此篇为 ...
- MySQL InnoDB 锁介绍及不同 SQL 语句分别加什么样的锁
作者:iceman1952(本文来自作者投稿) 本文中,我们详细介绍MySQL InnoDB存储引擎各种不同类型的锁,以及不同SQL语句分别会加什么样的锁. 阅读提示 1. 本文所参考的MySQL文档 ...
- mysql innodb 锁_MySQL/InnoDB锁机制
显式加锁 select ... lock in share mode:加 S 锁 select ... for update:加 X 锁 MySQL快照读和当前读 在一个支持MVCC并发控制的系统中, ...
- mysql索引列是锁表还是锁行_[转]关于MYSQL Innodb 锁行还是锁表
关于mysql的锁行还是锁表,这个问题,今天算是有了一点头绪,mysql 中 innodb是锁行的,但是项目中居然出现了死锁,锁表的情况.为什么呢?先看一下这篇文章. 做项目时由于业务逻辑的需要,必须 ...
- MySQL InnoDB 锁表与锁行
2019独角兽企业重金招聘Python工程师标准>>> 由于InnoDB预设是Row-Level Lock,所以只有「明确」的指定主键,MySQL才会执行Row lock (只锁住被 ...
- mysql事务和锁innodb,MySQL - InnoDB 锁与事务(三)隔离级别与表的关系
事务的隔离级别是用来调节数据库的并发性和数据的可靠性之间的平衡的工具.MySQL支持所有四种标准的隔离级别,Repeatable Read,Read Commited,Read Uncommited, ...
- mysql innodb 锁类型_详细介绍MySQL InnoDB存储引擎各种不同类型的锁
本文中,我们详细介绍MySQLInnoDB存储引擎各种不同类型的锁,以及不同SQL语句分别会加什么样的锁. 阅读提示 1.本文所参考的MySQL文档版本是8.0,做实验的MySQL版本是8.0.13 ...
- MySQL行锁 表锁理解
MySQL InnoDB 锁表与锁行 由于InnoDB预设是Row-Level Lock,所以只有「明确」的指定主键,MySQL才会执行Row lock (只锁住被选取的资料例) ,否则MySQL将会 ...
- Mysql InnoDB事务
Mysql InnoDB事务 学习了:https://www.cnblogs.com/benshan/archive/2013/01/19/2867244.html 转载于:https://www.c ...
最新文章
- 死锁的必要条件及避免
- mysql explain用法
- c语言getchar用法_C语言 — 关键字
- mybatis中条件表达式if的test为字符串时值比较
- java表数据去重_java8实现列表去重,java8的stream 和lambda的使用实例
- 百度编辑器图片上传 java_百度编辑器粘贴图片自动上传到服务器(Java版)
- 排序-交换类排序--快速排序简介
- hdu 1213 HowManyTables 并查集
- 1.Shell 编程从入门到精通 --- 第一个 Shell 程序
- UGUI ScrollRect使用
- CAD图纸被加密了,如何打开?
- pyqt4的一些相关资料整理
- 文本动画过渡效果AE模板
- Excel电子表格隔行自动填充底色
- CMMI认证是什么?有哪些等级?价值体现在哪里?
- EOS是什么以及含义
- 利用Javascript动态生成表格的小demo
- 实时操作系统(RTOS)
- Appium自动化测试框架
- 【查找算法】二叉排序树查找法
热门文章
- 无法显示验证码去掉html,后台登陆验证码无法显示
- linux进程间通讯-信号
- tf.keras.optimizers.Adam 优化器 示例
- Python 基础 一
- windows 10 anaconda python 3.7 安装keras-gpu tensorflow-gpu
- oracle 10g磁盘管理,Oracle 10g UNDO表空间过大导致磁盘空间不足的解决
- 计算机二级考试题未来教育里占多少,计算机二级笔试试题未来教育版.doc
- Spring Cloud和Dubbo的区别
- rabbitmq中的三种交换器(匹配模式)
- html5 直接获取当前位置,HTML5调用百度地图API获取当前位置并直接导航目的地的方法...