zoukankan      html  css  js  c++  java
  • 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  ... 

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

  • 相关阅读:
    Centos7 安装RabbitMQ 3.6.1
    面向对象编程(类的绑定方法与非绑定方法)
    面向对象编程(封装、封装的意义、封装与扩展性、@property)
    函数式编程(__slots__)
    面向对象编程(实例属性、类属性)
    面向对象编程(获取对象信息)
    面向对象编程(继承、多态)
    函数式编程(访问限制)
    面向对象编程(类与实例)
    面向对象编程(基础简介)
  • 原文地址:https://www.cnblogs.com/JiangLe/p/8581481.html
Copyright © 2011-2022 走看看