2015-01-31 3 views
1

데이터베이스가 잠겨 있고 모든 쿼리를 완전히 차단하는 Hibernate/MySQL에 이상한 문제가 있습니다. show processlist는 다음과 같이 말합니다 : https://gist.github.com/knyttl/aec84d0abfc3f5fcd921단일 쿼리로 MySQL을 잠글 최대 절전 모드

그런 단순한 쿼리가 테이블을 잠글 수 있다는 것이 이상한 것 같습니다. 특히 트랜잭션이이 원시 쿼리만큼 짧습니다.

특히 모든 테이블에서 다른 모든 쿼리를 차단한다는 것이 이상한 일입니다.

+0

데이터베이스 연결 열기/닫기를 포함하여 여기에 Hibernate criteria/HQL을 게시 할 수 있습니까? –

+0

이 네이티브 쿼리를 호출하는 메소드에서 @Transactional 어노테이션 만 사용합니다. 다른 건 없어. –

답변

1

잠긴 테이블이있는 경우 프로세스 목록에 Locked 상태가 표시됩니다.

간단한 쿼리가 실행되고 트랜잭션이 끝나면 잠금이 해제됩니다.

귀하의 경우에는 데이터베이스 연결을 완료하지 않았다고 생각됩니다. 그러면 데이터베이스가 차단 된 이유가 설명됩니다. 데이터베이스가 정상이지만 연결이 이미 할당되어 있으므로 새로 연결할 수 없습니다.

+0

@Transactional 어노테이션을 사용하고 있기 때문에 실제로 연결을 사용하지 않으므로 연결을 해제 할 수없는 것을 볼 수 없습니까? 무엇이 잘못되었는지 확인하는 방법이 있습니까? –

+0

[FlexyPool] (https://github.com/vladmihalcea/flexy-pool)을 설정하여 연결 풀 동작을 모니터링 할 수 있습니다. –

관련 문제