美文网首页
mysql数据库锁MDL锁的解释

mysql数据库锁MDL锁的解释

作者: huan1993 | 来源:发表于2021-12-05 14:11 被阅读0次

1、背景

在我们系统中有一张表它的查询概率非常高。最近有个需求,需要对这个表增加一个字段,然而在增加字段的时候发现系统中有多个业务出现了超时操作,那么这个是什么原因导致的呢?经过查阅资料发现是数据库的MDL锁+事务导致的。

2、什么是MDL锁

MDL锁属于表级别的元数据锁。表级别锁分为数据锁和元数据锁,通常我们说的加锁一般指的是加的数据锁。跟数据锁一样,元数据锁也分读锁和读写锁。

MDL不需要显示使用,在进行表操作时会自动加上。当对表进行增删改查时,会自动加上MDL读锁;当要对表进行加减字段的结构修改时,会自动加上MDL写锁。

  • 读锁不互斥,意味着可以多个线程同时对一张表进行增删改查的操作。
  • 写锁独占,进行结构修改前,要先等待其他所有的MDL锁释放了才能获取到MDL写锁。获取到写锁后,在写锁释放前,其他线程无法获取到MDL读锁和写锁。也就是说,修改一个表的结构过程中,会阻塞其他线程对表的操作。

3、MDL锁的必要性

MDL锁的存在,其实是为了保证数据的一致性。想象一下,假如没有MDL锁,一个查询在遍历表数据的过程中,另外一个线程执行了ALTER TABLE t DELETE COLUMN 'col_1'col_1这一列删掉了,那查询结果就乱了,结果中是否应该有这一列数据?

4、举例说明

✅ :表示正常往下执行

❌ :表示卡住了,即无法往下执行。

事物一 事物二 事物三
start transaction;✅ 1️⃣
select * from customer;✅2️⃣ alter table customer add column_4 int null;❌3️⃣
select * from customer;❌4️⃣
commit;✅5️⃣ ✅6️⃣ ✅7️⃣

解释:

步骤 1️⃣2️⃣正常执行。执行步骤2️⃣时,会申请表customerMDL的SHARED_READ锁

步骤3️⃣会卡住,因为此时会申请表customerMDL的EXCLUSIVE锁,但是事物一的事物没有提交,此时是无法申请到EXCLUSIVE锁,因为它们是互斥的。

步骤4️⃣也会卡住,因为EXCLUSIVE锁和SHARE_READ锁是互斥的,且EXCLUSIVE锁的优先级更高,所以步骤4️⃣也会卡住。

步骤5️⃣事物提交,释放表的SHARE_READ锁,之后就可以执行6️⃣和7️⃣的操作了。

如果先执行事务二,在执行事务三,则是可以成功的,因为alter数据ddl语句,和事物无关。

相关文章

  • mysql数据库锁MDL锁的解释

    1、背景 在我们系统中有一张表它的查询概率非常高。最近有个需求,需要对这个表增加一个字段,然而在增加字段的时候发现...

  • 有了MDL锁视图,业务死锁从此一目了然

    摘要:MDL锁视图让一线运维人员清晰地查看数据库各session持有和等待的元数据锁信息,从而找出数据库MDL锁等...

  • MySQL听讲(四)——数据库锁

    数据库的锁分为全局锁、表锁、行锁。 科普 锁的缩写:MDL(metadata lock):元数据锁。 全局锁 表锁 行锁

  • MySQL MDL锁

    MDL全称为metadata lock,即元数据锁。MDL锁主要作用是维护表元数据的数据一致性,在表上有活动事务(...

  • MySQL锁<一>

    MDL锁 对表的增删改查,都需要MDL锁,无所不在 MDL读锁之间不互斥,但MDL读写锁互斥 #举个栗子 假设t是...

  • S 锁与 X 锁,当前读与快照读!

    MySQL 中的锁还是蛮多的,在之前的文章中,松哥和大家介绍过 MySQL 中的 MDL 锁(为什么执行 alte...

  • 2019-07-23工作总结

    疑问1: MDL写锁, MDL读锁, 和S锁, X锁有啥区别? 疑问2: flush文件有啥作用? 答: fl...

  • MySQL表级锁

    表级锁的种类 MySQL里面表级别的锁有两种,一种是表锁,另一种是元数据锁(MDL, meta data lock...

  • MySQL只查一行语句,为什么慢?

    硬件压力 数据库本身压力过大, 磁盘io利用率太高 等待 锁等待 等待MDL锁, 使用show proceslis...

  • MS汇总

    数据库相关[MS-关于锁(乐观锁,悲观锁,行锁、表锁,共享锁,排他锁)Mysql索引优化Mysql查询优化Mysq...

网友评论

      本文标题:mysql数据库锁MDL锁的解释

      本文链接:https://www.haomeiwen.com/subject/woiixrtx.html