首页 > 其他分享 >决战圣地玛丽乔亚Day17 ----意向锁/MDL锁

决战圣地玛丽乔亚Day17 ----意向锁/MDL锁

时间:2023-02-21 18:25:58浏览次数:53  
标签:行级 乔亚 MDL ---- 互斥 意向锁 共享 表级

MYSQL的行锁: 独占锁、共享锁

表锁:除了独占锁共享锁之外,还有意向锁和MDL锁。

意向锁:
意向锁是一种不与行级锁冲突表级锁

意向锁数据引擎自己维护,自己无法去操作。

在为数据行加共享 / 排他锁之前,InooDB 会先获取该数据行所在在数据表的对应意向锁。

 

需要解决的问题:

如果事务A先给表加了排他锁,没有提交的情况下,事务B再去加共享锁就需要检查:表是否存在排它锁,表每一行是否存在排它锁。如果真的去检测每一行,效率很差,这时候就可以用意向锁。

 

 

 意向锁和表级的排他/共享锁的互斥关系如图,意向共享锁和共享锁之间不会互斥

这里的排他 / 共享锁指的都是表锁!!!意向锁不会与行级的共享 / 排他锁互斥!!!

这一段写的很好:

摘自 https://juejin.cn/post/6844903666332368909

 

 

总结

  1. InnoDB 支持多粒度锁,特定场景下,行级锁可以与表级锁共存。
  2. 意向锁之间互不排斥,但除了 IS 与 S 兼容外,意向锁会与 共享锁 / 排他锁 互斥
  3. IX,IS是表级锁,不会和行级的X,S锁发生冲突。只会和表级的X,S发生冲突。
  4. 意向锁在保证并发性的前提下,实现了行锁和表锁共存满足事务隔离性的要求。

MDL锁:

 

标签:行级,乔亚,MDL,----,互斥,意向锁,共享,表级
From: https://www.cnblogs.com/dwj-ngu/p/17141962.html

相关文章

  • 三种云服务
    iaas:基础设施即服务即只提供基础服务器的云服务paas:平台即服务在提供基础服务的前提下,还部署有项目需要的依赖环境等,例如mysql,javasaas:软件即服务s......
  • pandas vs sql 基本操作对比
    作为一名数据分析师,平常用的最多的工具是SQL(包括MySQL和HiveSQL等)。对于存储在数据库中的数据,自然用SQL提取会比较方便,但有时我们会处理一些文本数据(txt,csv),这个时候......
  • Flink基本概念及架构
    1、基本概念无界和有界数据。任何类型的数据都可以形成一种事件流。信用卡交易、传感器测量、机器日志、网站或移动应用程序上的用户交互记录,所有这些数据都形成一......
  • TS进阶知识点
    1.TS内置高级类型Partial&Pick&Required&Readonly 1.1、Partial Partial可以快速把某个接口类型中定义的所有属性变成可选的interfaceApiKey{ id:number; ......
  • 一次docker-compose建立镜像但无法找到
    环境:zabbix官网提供的docker-compoes一开始以为是ports没有配置,但配置后dockerps-a所显示的还是为空,在重新翻找过后,查到是zabbix的compose建立了两个brige,在zabbix的配......
  • koa中间件的实现原理
    koa中间件的实现原理如何?先来看一个例子。koa的执行顺序是这样的:constmiddleware=asyncfunction(ctx,next){console.log(1)awaitnext()console.log(6)......
  • Django框架课-创建游戏界面 (1)
    创建游戏界面(1)最后的结构:playground/|--ac_game_object|`--zbase.js|--game_map|`--zbase.js|--particle|`--zbase.js|--player|`--zbas......
  • 记录--uni-app实现京东canvas拍照识图功能
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助最近公司出了一个新的功能模块(如下图),大提上可以描述为实现拍照完上传图片,拖动四方框拍照完成上传功能......
  • Django重点
    Django简述python三大主流web框架"""django 大而全,类似于航空母舰 但是有时候过于笨重flask 小而精,类似于游骑兵(单行代码就可以起一个flask服务) 第三方组件很多,......
  • JSON.toJSONString(object, SerializerFeature.WriteMapNullValue);第二个参数作用
      这里箭头指向的位置,因为sent-1中的value为空,所以并未打印出来。第二个使用:JSON.toJSONString(map,SerializerFeature.WriteMapNullValue)指定序列化方式就打印出......