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  ... 

 

 

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

 

转载于:https://www.cnblogs.com/JiangLe/p/8581481.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值