개발 환경에서 인덱스를 제거할려고하니 이상하게 transaction wait timeout 때문에 쿼리가 실패하고 있었음
도대체 어떤 쿼리가 오랫동안 lock을 잡고 있었던 걸까? 확인이 필요했음
- 이 중 State 컬럼의 내용 중 Sending data이라는 상태 값이 있다
대부분 이녀석이 범인인데 Info의 내용을 보고 테이블과 관련있는 쿼리인지 확인이 필요하다.
- 롱쿼리나 더 이상 수행이 필요하지 않다면 Id 값을 보고 프로세스 수행을 죽인다.
그래도 역시 주의해야할 것은 수행중인 쿼리를 강제로 죽이기 때문에 죽여도 되는 쿼리인지 확인을 해야한다.
update나 insert 쿼리라면 데이터 정합성에 문제가 생길 수 있다.
도대체 어떤 쿼리가 오랫동안 lock을 잡고 있었던 걸까? 확인이 필요했음
SHOW PROCESSLIST- 최근에 수행한 쿼리들의 목록을 볼 수 있는 쿼리
- 이 중 State 컬럼의 내용 중 Sending data이라는 상태 값이 있다
대부분 이녀석이 범인인데 Info의 내용을 보고 테이블과 관련있는 쿼리인지 확인이 필요하다.
- 롱쿼리나 더 이상 수행이 필요하지 않다면 Id 값을 보고 프로세스 수행을 죽인다.
-- ID값을 넣으면 된다. KILL 36581해당 테이블에 대한 인덱스 제거 쿼리를 수행하면 바로 수행이 끝나는 것을 확인할 수 있다.
그래도 역시 주의해야할 것은 수행중인 쿼리를 강제로 죽이기 때문에 죽여도 되는 쿼리인지 확인을 해야한다.
update나 insert 쿼리라면 데이터 정합성에 문제가 생길 수 있다.
'MySQL' 카테고리의 다른 글
[MySQL] Replace 함수와 Case 기능 혼합해서 사용 (replace + case) (0) | 2017.04.04 |
---|---|
[MySQL] 테이블의 용량 확인하기 (1) | 2016.10.04 |
[MySQL] 테이블을 지우지도 만들지도 못할 때.. 테이블만이라도 복구하기 (1) | 2016.08.31 |
[MySQL] 두개의 컬럼을 IN 절로 비교하기 (0) | 2016.08.30 |
Trim 함수를 써서 공백을 모두 제거하기 (0) | 2016.08.11 |