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

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

  • 相关阅读:
    c#大圣之路笔记——c# 页面加载数据过长等待显示框
    Python(五)
    Python(四)
    Python(三)
    python(二)数据类型与变量
    初识Python
    Linux初识(九)
    Linux初识(八)正则表达式
    Linux基础初识(七)
    Linux基础初识(六)
  • 原文地址:https://www.cnblogs.com/JiangLe/p/8581481.html
Copyright © 2020-2023  润新知