index 관련 질문입니다. 0 2 1,706

by 깽즈 [2012.03.16 03:30:05]


안녕하세요. 현재 오라클을 공부하고 있는 학생입니다.

다름이 아니라 index를 공부하면서 궁금한 점이 생겨서요..

index가 생성이 되고 데이터가 엄청 많이 들어간 상태에서.

기본적으로 index는 update나 delete같은 DML이 발생이 많이 하면 손상이 많이 된다고 하는데요..

b*tree index 구조에서 어차피 root  -> branch -> leaf 로 찾아들어가는데 데이터가 삭제되고 없데이트 되는 것이 어떤 관련이 있는 건가요?
수평적 탐색에 문제가 생기나요?

조언 부탁드립니다.^^

감사합니다.
by 강서꽃미남 [2012.03.16 09:04:17]

INDEX 에 DML을 발생하게 되면, INDEX SPLIT 현상이 발생하게 됩니다.
관련 자료 링크걸어드립니다.

http://wiki.ex-em.com/index.php/Index_Split


by Philip [2012.03.16 09:34:03]

b-tree 인덱스의 경우로 인덱스로 정의된 컬럼이

1) update 되면 해당되는 인덱스 블럭의 이동발생하며 값에 따라 인덱스의 재편성(Index split)이 발생할 수 있습니다.
2) delete가 발생하면 인덱스 구조에는 아무런 변경이 발생 하지 않습니다. 그래서 데이터가 왕창 들어갔다가 왕창 삭제 되는 테이블의 경우는 테이블 전체 사이즈보다 인덱스 사이즈가 더 큰 경우도 발생합니다.

위와 같은 문제점이 있어서
인덱스 컬럼의 경우 변경이 안되는 컬럼으로 정의하는 것이 가이드로 제시되고 있습니다.
dml이 자주 발생하는 인덱스인 경우 rebuild를 주기적으로 해야 속도를 보장할 수 있습니다.
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입