Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

코딩하는원숭이

mysql 현재 실행중인 쿼리 확인 및 강제종료 (deadlock 해결) 본문

프로그래밍/DB/mysql/mybatis

mysql 현재 실행중인 쿼리 확인 및 강제종료 (deadlock 해결)

ssssssu 2018. 2. 9. 10:18

현재 실행중인 쿼리 확인 명령어


mysql> show processlist;

+------+---------+-----------------+---------+-------------+------+----------------+-----------------------------------+

| Id      | User     | Host              | db       | Command  | Time | State             | Info                                   |

+------+---------+-----------------+---------+-------------+------+----------------+-----------------------------------+

| 5354  | ...         | ...                  | ...         | Query       |  733  | ...                 | SELECT ...                             |

+------+---------+-----------------+---------+-------------+------+----------------+-----------------------------------+


- Id : 쿼리 아이디. PID라고 생각하면 된다.

- User : 쿼리 실행 user

- Host : 연결 host ip

- db : database명

- Command

- Query : 실행중인 쿼리

- Sleep : 쿼리의 실행이 완료되고 연결만 유지되고 있는 경우

- Time : 쿼리 실행 시간 (초)

- State : 현재 쿼리가 뭘 하고있는지 나타냄

- Info : 쿼리문


보통의 경우 Command가 Query이며, Time이 10초 이상인 경우 확인 및 개선이 필요하다. (쿼리 튜닝 등)


또한 Time이 긴 쿼리가 deadlock의 원인이 되는 경우가 많은데, 

현재 db가 deadlock이 걸린 경우 원인이 되는 쿼리를 찾아 아래와 같이 강제종료 시키면 해결할 수 있다.


mysql> kill 5354 


(kill Id번호)



+ 추가

show processlist를 이용할 경우 조건을 넣을수가 없다.

show processlist에 조건을 넣고 싶은 경우 아래처럼 직접 select해야 한다.


mysql> SELECT * FROM INFORMATION_SCHEMA.PROCESSLIST WHERE info IS NOT NULL AND time > 10;


'프로그래밍 > DB/mysql/mybatis' 카테고리의 다른 글

mybatis resultMap 활용 - join  (2) 2017.09.29
Comments