* 질문 등록 시 다음의 내용을 꼭 기입하여 주세요.
리눅스 | |
9.3 | |
10.1 | |
java |
* CUBRID 응용 오류, SQL 오류 또는 SQL 튜닝 관련된 문의는 반드시 다음의 내용을 추가해 주세요. 비밀글이나 비밀 댓글도 가능합니다.
* 저희가 상황을 이해하고, 재현이 가능해야 알 수 있는 문제들이 많습니다. 가능한 정보/정황들을 부탁합니다.
에러 내용 및 재현 방법 | 재현 가능한 Source와 SQL |
관련 테이블(인덱스, 키정보 포함) 정보 | CUBRID 홈 디렉토리 아래 log 디렉토리 압축 |
-------------- 아래에 질문 사항을 기입해 주세요. ------------------------------------------------------------------------
안녕하세요.
테이블에 데이터 건수가 너무 많아서
update 할시 조건에 인덱스가 걸려있지 않아서 오래 걸리더라구요.
그래서 create index를 하려고 하는데 개발서버에 해보니 데이터 건수가 많다보니 시간이 오래 걸립니다.
운영서버에 create index를 하면 분단위 이상 시간이 걸릴거 같은데
해당 명령어 실행도중에 사용자가 해당테이블 update, insert 등의 구문을 날리게 되면
transaction에 걸려서 대기를 하나요?
아니면 create index는 해당부분이랑은 전혀 상관 없는지요?
답변 부탁드립니다.
인덱스 생성 도중에는 테이블 스키마에 대한 LOCK이 잡혀 다른 DDL이 발생할 경우 교착상태가 발생할 수 있습니다.
또한 트랜잭션이 빈번히 일어나는 테이블의 경우 SCH_S_LOCK 스키마 잠금으로 인해 생성이 불가 할 수 있습니다.
따라서 인덱스 생성 중에 다른 트랜잭션이 들어와도 LOCK 대기는 하지 않지만 트랜잭션이 적은 시간에 작업하는 것을 권고드립니다.
https://www.cubrid.org/manual/ko/9.3.0/sql/transaction.html#lock-mode