zoukankan      html  css  js  c++  java
  • mysql DDL时出现的锁等待状态

    如下表格所示:

    session1: session2:
    10:30:27 root@localhost:[testdb] mysql.sock>select * from t2;
    +------+--------+-------+
    | id   | course | score |
    +------+--------+-------+
    |    1 | math   |  NULL |
    +------+--------+-------+
    1 row in set (0.00 sec)
     
      10:30:20 root@localhost:[testdb] mysql.sock>select * from t2;
    +------+--------+-------+
    | id   | course | score |
    +------+--------+-------+
    |    1 | math   |  NULL |
    +------+--------+-------+
    1 row in set (0.00 sec)


      10:30:24 root@localhost:[testdb] mysql.sock>begin;
    Query OK, 0 rows affected (0.00 sec)
    10:30:31 root@localhost:[testdb] mysql.sock>begin;
    Query OK, 0 rows affected (0.00 sec)
     
    10:30:33 root@localhost:[testdb] mysql.sock>alter table t2 drop column score;
    Query OK, 0 rows affected (0.04 sec)
    Records: 0  Duplicates: 0  Warnings: 0
     
    10:30:54 root@localhost:[testdb] mysql.sock>alter table t2 add column score int default 0;
    Query OK, 0 rows affected (0.03 sec)
    Records: 0  Duplicates: 0  Warnings: 0
     
      10:30:38 root@localhost:[testdb] mysql.sock>select * from t2;
    +------+--------+-------+
    | id   | course | score |
    +------+--------+-------+
    |    1 | math   |     0 |
    +------+--------+-------+
    1 row in set (0.00 sec)
    10:31:24 root@localhost:[testdb] mysql.sock>alter table t2 drop column score;
    waiting……
     
      10:31:52 root@localhost:[testdb] mysql.sock>commit;
    Query OK, 0 rows affected (0.00 sec)

    10:31:24 root@localhost:[testdb] mysql.sock>alter table t2 drop column score;
    Query OK, 0 rows affected (50.78 sec)
    Records: 0  Duplicates: 0  Warnings: 0
     
       

    在session2中并没有进行select * from t2 for update,但是session1中的alter出现了等待,而session2在没有进行select * from t2时,session1是可以正常进行alter操作的。(把上面的select * from t2换成select 1 from t2的效果也一样。)
    即mysql中的DDL操作需要没有其它线程操作其表时(即使是select也算),才会进行,要不会进行锁等待情况。






  • 相关阅读:
    创建对象的模式
    linux下安装node v12.16.3
    es6知识点总结
    在阿里云上部署的node服务器不能通过公网IP访问
    angular 1 input中选中状态绑定
    让一个元素水平垂直居中
    语录收集
    跨域
    事件循环
    git的常用命令
  • 原文地址:https://www.cnblogs.com/zejin2008/p/5477415.html
Copyright © 2011-2022 走看看