* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
Window7 32bit, Linux 64bit 등 | |
[cubrid_rel] 수행 결과 | |
[도움말]-[버전정보] 확인 | |
java, php, odbc 등 입력 |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
제품에 관해 공부하고 있는데, 메뉴얼의 제품 특징중에 교착상태의 의미는 알겠지만, 자동해결된다는게
두개의 트랜잭션이 하나의 데이터를 볼때, 우선순위에 따라서 두번째 트랜잭션이 실패 하지 않도록
잠시 기다렸다가 (time_out 기능 등으로? ) 처리한다는건지 아니면, 다른 방안이 있는건지 개념이 알고 싶습니다.
아래 내용을 보았는데. 이것은 하나를 롤백하는거니.. 자동 해결 방안이라기보다는 회피 방안인것 같습니다..
deadlock_detection_interval_in_secs는 중단된 트랜잭션에 대해 교착 상태
여부를 탐지하는 주기를 초 단위로 설정하기 위한 파라미터이다. CUBRID 시스템은 교착 상태에 있는 트랜잭션 중 하나를 롤백시켜 교착 상태를
해결한다. 기본값은 1초이며, 최소값은 0.1초이다. 이 값은 0.1초 단위로 올림하여 동작한다. 즉, 입력값이 0.12초이면 0.2초를 입력한
것과 같이 동작한다. 탐지 주기가 길면 오랜 시간동안 교착 상태를 탐지할 수 없으므로 주의한다.
감사합니다.
안녕하세요.
아시다시피, 교착 상태란 둘 이상의 트랜잭션이 서로 맞물려 상대방의 잠금이 해제되기를 기다리는 상태입니다.
하나의 트랜잭션이 종료되지 않은 이상 교착 상태는 종료될 수 없습니다.
또한 확인하신 매뉴얼 그대로, 교착 상태 발생 시, 하나의 트랜잭션을 롤백시킴으로 인하여 교착 상태를 해결하는 것으로 CUBRID는 동작하고 있습니다.
다만, DB Engine 자체가 특정 트랜잭션을 임시로 종료하여 교착 상태 해결 후, 종료되었던 작업을 다시 수행한다는 것은 불가능한 작업입니다.
또한 타 DBMS에서도 교착 상태 발생 시 하나의 트랜잭션을 종료하여 해결하고 있습니다.
교착 상태에 대한 추가 설명은 링크를 확인해 주세요.