一 简介: MDL锁

二 分类

1 MDL读锁 MDL读锁是相互兼容的 SHARED_READ

2 MDL 写锁 MDL写锁是互斥的 EXCLUSIVE

三 针对目标

1 目标 MDL锁是针对语句级别的,并非事务本身,是mysql_server层面的锁

2 目的 当事务本身执行的时候理论上是不能容忍表结构在中途发生改变的

四 MDL申请

0 select 语句 MDL_SHARED_READ

1 DML语句 MDL_SHARED_WRITE

2 DDL语句

1 inplace MDL_SHARED_UPGRADABLE,不会阻塞DML操作

2 copy MDL_EXCLUSIVE,会阻塞DML操作,针对select 会在rename时段卡主

3  其他全局性语句 涉及到的锁比较多 就不一一列出了

五 经典的元数据锁问题

问题 当我们执行DDL或者innobackup备份时,会出现waiting for table meta lock的问题,而且会导致后续session的等待,我们该如何处理呢

分析 执行上述操作需要申请MDL锁,就证明有操作在把持着MDL锁没有释放,大概会有几种

1 针对此表的慢查询操作(select),没有释放MDL锁

2 针对此表的未提交事物,可能是由于程序原因导致的

3 针对此表的 其他DDL操作

4 执行 flush table with read lock,常见innobackup

解决问题

1 通过show processlist 观察是否有 slow query,DDL,FTWRL操作,如果有进行处理

2 通过innodb_trx 观察是否有未提交事物,如果有进行处理

3 对于mysql5.7版本 可以通过 performance_schema.metadata_lock 进行观察,关键字 SHARED_READ

六 补充

1 MDL锁等待时间也是通过lock_wait_timeout 设置的

2 mysql5.7对MDL锁的相关特性进行了优化

3 读写事物语句,都是先申请 MDL_EXCLUSIVE,再降级成 READ WRITE锁,所以我上面没有标 注

4 由于队列设计,所以一旦出现MDL锁,一定要及时进行处理

mysql mdl 锁_mysql原理 ~ 细说 MDL锁相关推荐

  1. 12.synchronized的锁重入、锁消除、锁升级原理?无锁、偏向锁、轻量级锁、自旋、重量级锁

    小陈:呼叫老王...... 老王:来了来了,小陈你准备好了吗?今天我们来讲synchronized的锁重入.锁优化.和锁升级的原理 小陈:早就准备好了,我现在都等不及了 老王:那就好,那我们废话不多说 ...

  2. mysql 插入加锁_MySQL的死锁系列- 锁的类型以及加锁原理

    疫情期间在家工作时,同事使用了 insert into on duplicate key update 语句进行插入去重,但是在测试过程中发现了死锁现象: ERROR 1213 (40001): De ...

  3. MySQL mdl导入_MySQL · 特性分析 · MDL 实现分析

    前言 在MySQL中,DDL是不属于事务范畴的,如果事务和DDL并行执行,操作相关联的表的话,会出现各种意想不到问题,如事务特性被破坏.binlog顺序错乱等,为了解决类似这些问题,MySQL在5.5 ...

  4. Mysql共享锁实例_mysql共享锁与排他锁用法实例分析

    本文实例讲述了mysql共享锁与排他锁用法.分享给大家供大家参考,具体如下: mysql锁机制分为表级锁和行级锁,本文就和大家分享一下我对mysql中行级锁中的共享锁与排他锁进行分享交流. 共享锁又称 ...

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

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

  6. mysql表级锁和行级锁_Mysql的表级锁和行级锁

    表级锁 MySQL表级锁分为读锁和写锁. 读锁 用法:LOCK TABLE table_name [ AS alias_name ] READ 释放锁使用UNLOCK tables.可以为表使用别名, ...

  7. mysql排他锁_mysql共享锁与排他锁

    mysql锁机制分为表级锁和行级锁,本文就和大家分享一下我对mysql中行级锁中的共享锁与排他锁进行分享交流. 共享锁又称为读锁,简称S锁,顾名思义,共享锁就是多个事务对于同一数据可以共享一把锁,都能 ...

  8. mysql myisam 行锁_MySQL MYISAM引擎表锁和行锁详解

    MySQL有三种锁:表级锁.行级锁和页面锁.BDB支持页面锁,MyISAM支持表级锁,而innoDB则支持表锁和行级锁.这篇文章主要介绍MYISAM引擎的表锁. 表锁分为读锁(read lock)和写 ...

  9. redis分布式锁实现原理_redis分布式锁实现分析与实践

    前言: 在分布式环境中, 我们有些情况下需要使用到锁进行并发控制, 可供基于的 redis, zookeeper,mysql类数据库 基于数据库类的实现是乐观锁, 基于redis,zookeeper的 ...

最新文章

  1. 数据库和缓存一致性的问题
  2. WCF入门教程(vs2010)
  3. php猜数游戏63,PHP实现猜数游戏的代码实例分享
  4. python【力扣LeetCode算法题库】面试题 17.16- 按摩师(DP)
  5. 百度万亿流量的转发引擎BFE开源了!华为折叠屏曝光,采用传统翻盖式手机折叠方案;微软将关闭安卓iOS平台Cortana……...
  6. keyup常用事件_KeyUp 事件
  7. 最强白嫖指南---推荐11个珍藏多年的网站!
  8. rapidxml的简单使用
  9. html静态网页制作代码
  10. 两台计算机怎么ping通,怎么ping网络(2个网段电脑怎么ping通)
  11. Android 高级面试
  12. 计算机硬件软件的英语,计算机软件和硬件,PC computer software and hardware,音标,读音,翻译,英文例句,英语词典...
  13. 万兆网络传输速度测试_万兆带宽测试方法
  14. ubuntu下添加路径到PATH
  15. 每日一分享C语言代码(The first day)
  16. win7 64位右键添加显示隐藏系统文件和文件扩展名
  17. 校园二手平台——微信小程序
  18. Concrete5建站
  19. 【MAFNet】 A Multi-Attention Fusion Networkfor RGB-T Crowd Counting解读
  20. 步行并不安全:交通工具的死亡率

热门文章

  1. 动态规划---例题6.多边形游戏
  2. 九方智投李红红:新型储能方案推动锂电池迎来新商机
  3. 计算机的投资:量化投资
  4. GPFS 并行文件系统
  5. 西门子uss通讯实例_西门子PLC使用串行接口 (USS) 通信
  6. 零中频接收机的问题以及设计解决方案
  7. python阴阳师脚本_用Python实现抽卡的脚本
  8. 强大的Flutter App升级功能
  9. wetool 接入图灵机器人_wetool自动接受新好友wetool使用教程-购买
  10. MapGis前端开发笔记一