데드락 관련 설정 문제

by 왕왕초보 posted Nov 05, 2018

* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
OS
Linux 64bit 등
CUBRID Ver.
9.3.0
CUBRID TOOL Ver.
9.3.0
응용 환경(API)
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 버전에서는 가능한 지도 궁금합니다.