실행 중인 다른 쿼리가 없는데 Amazon RDS MySQL DB 인스턴스에 대한 쿼리가 차단된 이유는 무엇입니까?

최종 업데이트 날짜: 2019년 12월 26일

MySQL을 실행 중인 Amazon Relational Database Service(Amazon RDS) DB 인스턴스에서 쿼리를 실행하려고 했지만 쿼리가 차단되었습니다. 당시에는 실행 중인 다른 쿼리가 없습니다. 쿼리가 차단된 이유는 무엇이며 이 문제를 해결하려면 어떻게 해야 합니까?

해결 방법

차단된 쿼리의 가장 일반적인 원인은 커밋되지 않은 InnoDB 트랜잭션으로 인해 새로운 쿼리가 차단되고 비활동 상태가 되고 잠금 대기 제한 시간을 초과하면 결국 실패할 수 있습니다.

커밋되지 않은 트랜잭션 식별

1.    INNODB_TRX 테이블에 대해 다음 쿼리를 실행하여 현재 실행 중인 트랜잭션을 식별합니다.

select * from information_schema.innodb_trx\G

2.    쿼리 결과에서 실행 중인 트랜잭션을 애플리케이션의 동작 및 워크로드와 일치시킵니다. 이 프로세스는 시간이 오래 걸릴 수 있지만 작업을 수행하기 전에 각 쿼리가 데이터베이스와 애플리케이션의 상태에 미치는 잠재적인 영향을 이해하는 것이 중요합니다.

3.    차단 트랜잭션을 식별한 후 트랜잭션의 trx_state를 검토하고 트랜잭션을 중지하거나 롤백할 때의 영향을 고려합니다. 참고: 장기 실행 작업의 롤백은 데이터베이스, 애플리케이션 또는 사용 사례에 피해를 줄 수 있는 I/O 또는 잠금 작업을 시스템에 생성할 수 있습니다.

트랜잭션 중지

트랜잭션을 중지하려면 다음 단계에 따라 실행 중인 모든 InnoDB 트랜잭션을 중지(종료)할 수 있습니다.

1.    실행 중인 상태의 모든 InnoDB 트랜잭션을 찾습니다.

select * from information_schema.innodb_trx\G

2.    중지할 InnoDB 트랜잭션의 스레드 ID를 기록합니다.

3.    다음 명령을 실행하여 실행 중인 트랜잭션을 중지(종료)합니다. 여기서 thread-ID는 실행 중인 InnoDB 트랜잭션의 스레드 ID입니다.

CALL mysql.rds_kill(thread-ID)

트랜잭션이 중지된 후 차단된 쿼리를 다시 실행해 보십시오.


이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?