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也算),才会进行,要不会进行锁等待情况。






  • 相关阅读:
    字符串的排列
    二叉搜索树与双向链表
    复杂链表的复制
    二叉树中和为某一值的路径
    二叉搜索树的后序遍历序列
    从上往下打印二叉树
    python系统编程(一)
    python网络编程(十三)
    python网络编程(十二)
    python网络编程(十一)
  • 原文地址:https://www.cnblogs.com/zejin2008/p/5477415.html
Copyright © 2011-2022 走看看