* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
Linux 64bit 등 | |
9.3.0 | |
9.3.0 | |
java 웹 어플리케이션 |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
기존 웹 서비스를 인수받았는데..., 전임자가 도저히 해결 못한 문제입니다.
특정 테이블에 사용자가 접근했을 때, X_LOCK, IX_LOCK이 발생합니다. 데드락이 발생하는 이유는 2개 이상의 트랜잭션이 같은 테이블을 대상으로 작업하려 할 때 발생한다는 것은 알겠습니다. 해당 테이블에 인덱스를 추가하여 일부 테이블은 해결하였으나, 그래도 발생하는 경우가 있습니다.
그런데, 락에 걸린 사용자는 DBA가 락을 풀어주기 전까지는 언제까지나 해당 프로세스에 접근할 수 없습니다. 해당 테이블 사용권을 선점한 사용자가 빠져 나간 뒤에는 락에 걸렸던 사용자가 다시 사용을 요청하면 사용할 수 있어야 할 것 같은데... 어디가 문제인지 알려 주시면 감사하겠습니다.
현재 cubrid.conf 파일의 동시성/잠금 관련 파라미터 설정은 다음과 같습니다.
deadlock_detection_interval_in_secs = 1
lock_timeout=10s
isolation_level=1
lock_escalation=2100000000
혹시 큐브리드 9.3 버전에서 해결할 수 없는 문제라면, 10 버전에서는 가능한 지도 궁금합니다.
아래 정보를 첨부해 주시면 원인파악에 도움이 될 것 같습니다.
2개 이상의 트랜잭션을 처리했던 SQL LOG( $CUBRID/log/broker 경로 파일 확인 필요 )
sever 로그 확인 필요( $CUBRID/log/server 경로의 해당 이슈 발생 시의 로그 확인 필요 )
락이 발생 했을 때의 에러 내용