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

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

  • 相关阅读:
    禁止MDA对话框的产生 Anny
    how tomcat works(第14章:服务器和服务)
    Python学习笔记2
    how tomcat works(第15章: Digester)
    how tomcat works(第17章: 启动Tomcat)
    how tomcat works(第15章: Digester)
    Python学习笔记2
    how tomcat works(第14章:服务器和服务)
    how tomcat works(第16章: 关闭钩子)
    how tomcat works(第16章: 关闭钩子)
  • 原文地址:https://www.cnblogs.com/JiangLe/p/8581481.html
Copyright © 2020-2023  润新知