mysql meta lock_MySQL Metadata Lock详解

Metadata Lock 的作用:

要直接说出Metadata Lock 的作用、以我目前的文字功底是不行的、好在我可以通过一个例子来说明。

假设session 1 在正在执行如下的SQL语句

select * from t ;

session 2 想要执行

drop table t;

drop table t ; 这句SQL是不能得到马上执行的、因为session 1 还用着t表。

Metadata Lock 是为了防止在有dml执行的过程中,有ddl修改dml中用到的对象,所以不管是dml还是ddl

在执行前都要得到语句所涉及对象的Metadata Lock ;不同的是dml要得到的是S锁、而ddl是X锁。

上面的例子中通过show processlist 可以看到如下内容

show processlist;+----+-------------+-----------+--------+---------+------+---------------------------------+------------------+

| Id | User | Host | db | Command | Time | State | Info |

+----+-------------+-----------+--------+---------+------+---------------------------------+------------------+

| 1 | jianglexing | localhost | tempdb | Sleep | 23 | | NULL |

| 2 | jianglexing | localhost | tempdb | Query | 11 | Waiting for table metadata lock | drop table t |

| 3 | jianglexing | localhost | NULL | Query | 0 | starting | show processlist |

+----+-------------+-----------+--------+---------+------+---------------------------------+------------------+

Metadata Lock 的作用范围:

所在数据库中的对象、如 table、schema、trigger  ...

----------------------------------------------------------------------------------------------

de2b40c633eccdbb12e822291ce4e3bd.png

6430223ef273856cbf5c627d3408a28a.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值