* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
Window7 32bit, Linux 64bit 등 | |
[cubrid_rel] 수행 결과 | |
[도움말]-[버전정보] 확인 | |
java, php, odbc 등 입력 |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
인서트 시 락 걸립니다.
20,000건정도 인서트하니 60건정도 ix-lock걸립니다.
연계 시에는 ??_lock, 인서트 시에도 ??_lock, 락종류가 다양하게 걸립니다.
락이 잘 걸리는데 해결방법 문의드립니다.
큐브리드에서는 INSERT시 해당 ROW에 대해해서 COMMIT 하기 전에는 X_LOCK을(EXCLUSIVE LOCK), 테이블에 대해서는 IX_LOCK(INTENT EXCLUSIVE LOCK)을 획득합니다. 현재 트랜잭션이 변경중인 상황에서 다른 트랜잭션이 스키마를 변경하거나 변경중인 데이터에 대해서 변경 DELETE 또는 UPDATE와 같은 작업을 제한하여 데이터의 정합성을 지키기 위한 일반적인 현상입니다.
다만, ISOLATION_LEVEL(격리수준)에 따라 트랜잭션의 유연성이 달라지는데 높으면 데이터의 읽기 일관성 및 정합성이 보장되지만 동시성 및 유연성은 낮아지며 반대로 동시성 및 유연성이 높아지지만 데이터의 읽기 일관성이나 정합성은 낮아지게 됩니다. 예를 들어 ISOLATION_LEVEL를 낮추어 UNCOMMIT된 ROW을 읽게 하거나 반대로 COMMIT된 데이터만 읽을 수 있도록 할 수 있습니다.
참고로 CUBRID ISOLATION_LEVEL은 3이며 관련 URL은 아래와 같습니다.
http://www.cubrid.org/manual/ko/9.3.0/sql/transaction.html?highlight=ix_lock#set-transaction-isolation-level
트랜잭션 및 잠금의 경우 APPL 및 환경에 따라 다양한 현상이 있을 수 있어서 추가로 트랜잭션 및 잠금 메커니즘에 대해서 아래의 URL를 참고하시면 도움이 될 것 같습니다.
트랜잭션 및 잠금
http://www.cubrid.org/manual/ko/9.3.0/sql/transaction.html?highlight=ix_lock
감사합니다.