* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
|
|
Linux 64bit |
|
|
9.3 (9.3.9.1202) |
|
|
[도움말]-[버전정보] 확인 |
|
|
JAVA (Terastream) |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
| 에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
| 관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
현재 애플리케이션 단에서는 정상적으로 트랜잭션이 COMMIT까지 수행된 것이 확인됩니다.
실제로 쿼리 에디터 로그에서도 동일 세션(query_editor_X)에 대해 end_tran COMMIT이 기록되어 있습니다.
그런데 event 로그에서는 동일 세션이 이후에도 계속 blocker로 남아 있으며,
LOCK을 유지한 상태로 다른 트랜잭션의 LOCK_TIMEOUT을 유발하고 있습니다.
정확한 현상은 다음과 같습니다.
-
쿼리 에디터 로그에서는 문제 구간 직전까지 일련의 업데이트 쿼리 수행 후
end_tran COMMIT이 정상적으로 기록됨 -
그러나 event 로그에서는 동일한 세션이 COMMIT 이후에도 계속 blocker 로 남아 있으며, 시간 경과 후에도 해제되지 않음
-
그로 인해 별도의 세션에서 연관 테이블 접근 시 계속해서 LOCK_TIMEOUT이 발생
-
COMMIT 이후에는 해당 세션에서 추가적인 쓰기 쿼리나 트랜잭션 활동이 없음에도 불구하고 blocker 상태가 유지됨
안녕하세요, 큐브리드를 이용해주셔서 감사합니다.
첨부해주신 sql.log를 확인해보니 SESSION TIMEOUT 로그는 찍혀있지만, disconnect 로그가 찍혀있지 않은 걸로 확인됩니다.
cubrid tranlist <db_name> | cubrid tranlist <db_name>@localhost
위 유틸리티 명령어를 사용하여 현재 트랜잭션 상황을 파악해야지만 보다 더 정확한 답변을 드릴 수 있을 것 같습니다.
유틸리티 관련하여 메뉴얼 주소 남겨드리겠습니다. 참고하여 사용해주시길 바랍니다.
https://www.cubrid.org/manual/ko/9.3.0/admin/admin_utils.html?highlight=tranlist#tranlist
감사합니다.