一.S锁和X锁:S锁和X锁都属于行数

二.意向锁:表锁,相互兼容,表明“某个事务持有了锁、或准备去持有锁”

1、意向锁的存在是为了协调行锁和表锁的关系,支持多粒度(表锁与行锁)的锁并存。

2、

1)意向共享锁(IS锁):事务在请求S锁前,要先获得IS锁

2)意向排他锁(IX锁):事务在请求X锁前,要先获得IX锁

3、例子:事务A修改user表的记录r,会给记录r上一把行级的排他锁(X),同时会给user表上一把意向排他锁(IX),这时事务B要给user表上一个表级的排他锁就会被阻塞。意向锁通过这种方式实现了行锁和表锁共存且满足事务隔离性的要求。

q1:为什么意向锁是表级锁呢?

当我们需要加一个排他锁时,需要根据意向锁去判断表中有没有数据行被锁定(行锁);

(1)如果意向锁是行锁,则需要遍历每一行数据去确认;

(2)如果意向锁是表锁,则只需要判断一次即可知道有没数据行被锁定,提升性能。

q2:意向锁怎么支持表锁和行锁并存?

(1)首先明确并存的概念是指数据库同时支持表、行锁,而不是任何情况都支持一个表中同时有一个事务A持有行锁、又有一个事务B持有表锁,因为表一旦被上了一个表级的写锁,肯定不能再上一个行级的锁。

(2)如果事务A对某一行上锁,其他事务就不可能修改这一行。这与“事务B锁住整个表就能修改表中的任意一行”形成了冲突。所以,没有意向锁的时候,让行锁与表锁共存,就会带来很多问题。于是有了意向锁的出现,如q1的答案中,数据库不需要在检查每一行数据是否有锁,而是直接判断一次意向锁是否存在即可,能提升很多性能。

三.下图表示意向锁和共享锁、排他锁的兼容关系。

1.当事务A对某个数据范围(行或表)上了“某锁”后,另一个事务B是否能在这个数据范围上“某锁”。

2.意向锁相互兼容,因为IX、IS只是表明申请更低层次级别元素(比如 page、记录)的X、S操作。

3.表级S锁和X、IX锁不兼容:因为上了表级S锁后,不允许其他事务再加X锁。

4.表级X锁和 IS、IX、S、X不兼容:因为上了表级X锁后,会修改数据,所以即使是行级排他锁,因为表级锁定的行肯定包括行级锁定的行,所以表级X和IX、X都不兼容。

注意:上了行级X锁后,行级X锁不会因为有别的事务上了IX而堵塞,一个mysql是允许多个行级X锁同时存在的,只要他们不是针对相同的数据行。

————————————————版权声明:本文为CSDN博主「本兮言」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/ligupeng7929/article/details/89216881

mysql ix is_关于MySQL中的共享锁(S)、排它锁(X)、意向共享锁(IS)、意向排它锁(IX)...相关推荐

  1. mysql锁机制(共享锁(S)、排他锁(X)、意向共享锁(IS)、意向排他锁(IX)的关系,死锁,乐观锁,悲观锁...)

    1. 锁的基础与行锁的特点 1.1 概念 在开发多用户.数据库驱动的应用时,相当大的一个难点就是解决并发性的问题,目前比较常用的解决方案就是锁机制. 锁机制也是数据库系统区别于文件系统的一个关键特性. ...

  2. mysql innodb排他锁_mysql 中innoDB引擎的事务喝共享锁喝排他锁

    存储引擎 innoDB 事务和锁共存(事务本身就是利用锁机制来完成) 1.共享锁: ①当前事务可以进行查询和修改操作,其他事务(线程)必须等当前事务提交后才能进行操作,查询可以查,但是结果并不是当前事 ...

  3. mysql innodb 排他锁_MySQL 针对 InnoDB 引擎锁的种类:行锁(共享锁和排他锁)和表锁(意向共享锁和意向排他锁)...

    InnoDB 锁快速到底 行锁:共享锁(S).排他锁(X) 表锁:意向共享锁(IS).意向排他锁(IX) 下面主要针对 MySQL 中行级锁中的共享锁(S)与排他锁(X)进行分析 共享锁又称为读锁,简 ...

  4. MySQL数据库InnoDB存储引擎中的锁机制--转载

    原文地址:http://www.uml.org.cn/sjjm/201205302.asp 00 – 基本概念 当并发事务同时访问一个资源的时候,有可能导致数据不一致.因此需要一种致机制来将访问顺序化 ...

  5. mysql 并发 锁表_MySQL中的锁(表锁、行锁) 并发控制锁

    https://github.com/MrLining/mysql/wiki/MySQL%E4%B8%AD%E7%9A%84%E9%94%81%EF%BC%88%E8%A1%A8%E9%94%81%E ...

  6. 面试让HR都能听懂的MySQL锁机制,欢声笑语中搞懂MySQL锁

    腾讯云数据库负责人林晓斌说过:"我们面试MySQL同事时只考察两点,索引和锁".言简意赅,MySQL锁的重要性不言而喻. 本文通过同事"侨总"的一场面试,带你通 ...

  7. MySQL 意向共享锁、意向排他锁、死锁

    文章目录 一.InnoDB表级锁 二.意向共享锁和意向排他锁(针对整表) 三.死锁 1. 数据库中的死锁 2. 死锁场景以及解决办法 3. 操作 四.锁的优化建议 一.InnoDB表级锁 我们知道,I ...

  8. 远程连接docker中的mysql容器_docker构建mysql容器及Navicat 远程连接

    1. MySQL部署 1.1拉取MySQL镜像 docker pull mysql 查看镜像 docker images 1.2创建MySQL容器 首先建立所需要的 文件夹: docker run - ...

  9. mysql数据库备份总结_mysql中mysqlhotcopy备份数据库总结

    mysqlhotcopy是mysql数据库中一个备份工具,相对于mysqldump是一个快速文件意义上的COPY,mysqlhotcopy是一个数据库端的SQL语句集合. mysqlhotcopy用法 ...

  10. mysql主从同步linux,linux中部署mysql主从同步示例详解(绝对经典,看了必会)

    准备两台服务器并安装MySQL5.7 master服务器 192.168.254.132 slave服务器 192.168.254.136 确保两台服务器安装的mysql版本一致,本测试使用的是mys ...

最新文章

  1. [转载]如何发送和接收 Windows Phone 的 Toast 通知
  2. php高版本安装ecshop错误解决方法
  3. H5开发的web APP和原生APP的区别
  4. vuepress 2.x 集成 element-plus
  5. This will have no impact if delete.topic.enable is not set to true以及删除kafka中的topic
  6. leetcode22. 括号生成
  7. 10个较好在线商业理念
  8. Spring Cloud LoadBalanced 切换负载均衡策略
  9. Parallel ScavengeGC收集器
  10. Debezium实战-第7章 其它-Debezium UI
  11. C++中编写自己的头文件
  12. 定时任务系列(3)-Quartz动态定时任务
  13. mac 扩展显示器全屏滑动不一起滑动
  14. Casbin get-users 账号密码泄漏漏洞
  15. 什么造就了中国的XP系统依赖症
  16. CentOS 之 pstree 命令
  17. 用python实现12306抢票
  18. 基于Android Studio实现的功能强大的购物商城APP源码,可做Android Studio毕业设计、大作业
  19. click 和 onclick 的区别
  20. 海思HI3518E视频处理基础概念《三》----- 视频处理子系统VPSS

热门文章

  1. 一键激活windows系统与office(绿色无捆绑装机员激活工具)
  2. 做祛痘产品微信是如何引流的?祛斑祛痘产品引流加粉渠道有哪些?
  3. 移动海信IP102H_905L3-B_线刷固件包
  4. 群主微信sdk说明地址
  5. 开心网kaixin001状告kaixin,停用“开心网”名称,赔偿1000万元
  6. 苹果开发的资源URL链接
  7. (后台)Openbravo如何实现业务事件监听处理
  8. JQuery 简单表单验证
  9. 【老文档】20190331省电功能性文档
  10. 1、目标检测 RCNN(翻译+标注)