mysql mdl 锁_mysql原理 ~ 细说 MDL锁
一 简介: 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锁相关推荐
- 12.synchronized的锁重入、锁消除、锁升级原理?无锁、偏向锁、轻量级锁、自旋、重量级锁
小陈:呼叫老王...... 老王:来了来了,小陈你准备好了吗?今天我们来讲synchronized的锁重入.锁优化.和锁升级的原理 小陈:早就准备好了,我现在都等不及了 老王:那就好,那我们废话不多说 ...
- mysql 插入加锁_MySQL的死锁系列- 锁的类型以及加锁原理
疫情期间在家工作时,同事使用了 insert into on duplicate key update 语句进行插入去重,但是在测试过程中发现了死锁现象: ERROR 1213 (40001): De ...
- MySQL mdl导入_MySQL · 特性分析 · MDL 实现分析
前言 在MySQL中,DDL是不属于事务范畴的,如果事务和DDL并行执行,操作相关联的表的话,会出现各种意想不到问题,如事务特性被破坏.binlog顺序错乱等,为了解决类似这些问题,MySQL在5.5 ...
- Mysql共享锁实例_mysql共享锁与排他锁用法实例分析
本文实例讲述了mysql共享锁与排他锁用法.分享给大家供大家参考,具体如下: mysql锁机制分为表级锁和行级锁,本文就和大家分享一下我对mysql中行级锁中的共享锁与排他锁进行分享交流. 共享锁又称 ...
- mysql innodb 排他锁_MySQL 针对 InnoDB 引擎锁的种类:行锁(共享锁和排他锁)和表锁(意向共享锁和意向排他锁)...
InnoDB 锁快速到底 行锁:共享锁(S).排他锁(X) 表锁:意向共享锁(IS).意向排他锁(IX) 下面主要针对 MySQL 中行级锁中的共享锁(S)与排他锁(X)进行分析 共享锁又称为读锁,简 ...
- mysql表级锁和行级锁_Mysql的表级锁和行级锁
表级锁 MySQL表级锁分为读锁和写锁. 读锁 用法:LOCK TABLE table_name [ AS alias_name ] READ 释放锁使用UNLOCK tables.可以为表使用别名, ...
- mysql排他锁_mysql共享锁与排他锁
mysql锁机制分为表级锁和行级锁,本文就和大家分享一下我对mysql中行级锁中的共享锁与排他锁进行分享交流. 共享锁又称为读锁,简称S锁,顾名思义,共享锁就是多个事务对于同一数据可以共享一把锁,都能 ...
- mysql myisam 行锁_MySQL MYISAM引擎表锁和行锁详解
MySQL有三种锁:表级锁.行级锁和页面锁.BDB支持页面锁,MyISAM支持表级锁,而innoDB则支持表锁和行级锁.这篇文章主要介绍MYISAM引擎的表锁. 表锁分为读锁(read lock)和写 ...
- redis分布式锁实现原理_redis分布式锁实现分析与实践
前言: 在分布式环境中, 我们有些情况下需要使用到锁进行并发控制, 可供基于的 redis, zookeeper,mysql类数据库 基于数据库类的实现是乐观锁, 基于redis,zookeeper的 ...
最新文章
- 数据库和缓存一致性的问题
- WCF入门教程(vs2010)
- php猜数游戏63,PHP实现猜数游戏的代码实例分享
- python【力扣LeetCode算法题库】面试题 17.16- 按摩师(DP)
- 百度万亿流量的转发引擎BFE开源了!华为折叠屏曝光,采用传统翻盖式手机折叠方案;微软将关闭安卓iOS平台Cortana……...
- keyup常用事件_KeyUp 事件
- 最强白嫖指南---推荐11个珍藏多年的网站!
- rapidxml的简单使用
- html静态网页制作代码
- 两台计算机怎么ping通,怎么ping网络(2个网段电脑怎么ping通)
- Android 高级面试
- 计算机硬件软件的英语,计算机软件和硬件,PC computer software and hardware,音标,读音,翻译,英文例句,英语词典...
- 万兆网络传输速度测试_万兆带宽测试方法
- ubuntu下添加路径到PATH
- 每日一分享C语言代码(The first day)
- win7 64位右键添加显示隐藏系统文件和文件扩展名
- 校园二手平台——微信小程序
- Concrete5建站
- 【MAFNet】 A Multi-Attention Fusion Networkfor RGB-T Crowd Counting解读
- 步行并不安全:交通工具的死亡率