ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Waiting for table metadata lock 대처방법
    프로그래밍/DB 2017. 12. 25. 00:48
    728x90
    반응형



    간혹 테이블을 수정하려고 할 때 이상하게 오래 걸려서 show processlist를 쳐보면 

    작업의 status가 Wating for table metadata lock 일 경우가 있습니다. 


    말 그대로 현재 metadata 가 lock이 걸려있는 상태라서 작업이 수행되지 못하고 있는 상태인데 

    이것을 해결하기 위해서는 lock이 걸려있는 process를 강제로 종료하면 됩니다. 


    일단 mysql command 창에서 show full processlist를 쳐서 전체 프로세스를 확인하고 

    현재 오래 걸리고 있는 process id 이전에 있는 프로세스들 중 의심이 가는 프로세스를 kill process id 를 쳐서 종료시킵니다. 


    아래와 같이 기존 프로세스를 종료시켰더니 곧바로 변경사항이 수정되었습니다. 






    mysql> SHOW FULL PROCESSLIST;
    +--------+------------+-----------------+------------+---------+------+---------------------------------+-----------------------------------------------------------------------------------------------+
    | Id     | User       | Host            | db         | Command | Time | State                           | Info                                                                                          |
    +--------+------------+-----------------+------------+---------+------+---------------------------------+-----------------------------------------------------------------------------------------------+
    | 200609 | lla***       | localhost | realestate | Sleep   | 4729 |                                 | NULL                                                                                          |
    | 200657 | r***       | localhost       | realestate | Query   |    0 | starting                        | SHOW FULL PROCESSLIST                                                                         |
    | 200667 | p**** | localhost       | NULL       | Sleep   | 1255 |                                 | NULL                                                                                          |
    | 200668 | r***      | localhost       | realestate | Query   | 1255 | Waiting for table metadata lock | ALTER TABLE `Table` CHANGE `column1` `column1` DECIMAL(10,2) NULL DEFAULT NULL |
    +--------+------------+-----------------+------------+---------+------+---------------------------------+-----------------------------------------------------------------------------------------------+
    4 rows in set (0.00 sec)

    mysql> kill 200609;
    Query OK, 0 rows affected (0.00 sec)



    728x90
    반응형
Designed by Tistory.