문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
study:oracle:datadb:1week_2 [2010/05/06 16:34] ahmax |
study:oracle:datadb:1week_2 [2010/05/06 17:29] (현재) ahmax |
||
---|---|---|---|
줄 84: | 줄 84: | ||
{{: | {{: | ||
* lmc는 브랜치 블럭의 첫 번째 로우의 값보다 적은 값을 갖는 하위의 블럭의 주소정보(dba: | * lmc는 브랜치 블럭의 첫 번째 로우의 값보다 적은 값을 갖는 하위의 블럭의 주소정보(dba: | ||
- | | + | |
- | - 주어진 값보다 같거나 최소값을 찾는다.(찾는값 >= 인덱스값) | + | 1.루트 블록을 찾는다. |
- | - 찾는 값 < 인덱스 값 (Lmc에 있는 dba로 이동) | + | 2.주어진 값보다 같거나 최소값을 찾는다.(찾는값 >= 인덱스값) |
- | - 찾는 값 = 인덱스 값 (해당 dba로 이동) | + | 찾는값 < 인덱스 값 (Lmc에 있는 dba로 이동) |
- | - 찾는 값 > 인덱스 값 (검색 후 찾는 값 = 인데스 값이면 해당 dba로 이동 그렇지 않으면, 찾는 값 < 인데스 값을 만족하는 인덱스 최소값) | + | 찾는 값 = 인덱스 값 (해당 dba로 이동) |
- | - 리프 블록을 찾을 때까지 ② 의 단계를 반복해서 수행. | + | 찾는 값 > 인덱스 값 |
- | - 리프 블록에서 주어진 값을 가진 키를 찾아 존재하면 ROWID를 이용해 테이블을 액세스하고, | + | (검색 후 찾는 값 = 인데스 값이면 해당 dba로 이동 그렇지 않으면, |
+ | 찾는 값 < 인데스 값을 만족하는 인덱스 최소값) | ||
+ | 3.리프 블록을 찾을 때까지 ② 의 단계를 반복해서 수행. | ||
+ | 4.리프 블록에서 주어진 값을 가진 키를 찾아 존재하면 ROWID를 이용해 테이블을 액세스하고, | ||
+ | 그렇지 않으면 'No Data found' | ||
+ | | ||
+ | | ||
: | : | ||
줄 113: | 줄 119: | ||
* 루트 블록이나 브랜치 블록은 B-tree인덱스와 같은 구조로 되어 있으나 리프블록은 비트맵으로 구성되어 있다. | * 루트 블록이나 브랜치 블록은 B-tree인덱스와 같은 구조로 되어 있으나 리프블록은 비트맵으로 구성되어 있다. | ||
{{: | {{: | ||
- | + | {{: | |
- | === 생성절차 === | + | |
- | - 인덱스를 생성하고자 하는 컬럼의 값들을 찾기 위해 테이블 스캔을 한 후 | + | |
- | - bitmap generator에 의해 컬럼값, start rowid, end rowid , bitmap을 갖는 인덱스 엔트리를 생성한다. | + | |
- | - 2단계에서 생성된 Bitmap들을 B-tree구조에 넣기 쉽도록 key값과 start rowid 순으로 정렬한다. | + | |
- | - 마지막 단계에서는 정렬된 인덱스 엔트리들을 단순히 B-tree구조로 삽입한다. | + | |
=== 특성 === | === 특성 === | ||
줄 126: | 줄 127: | ||
* 수정이 빈번하게 발생하는 컬럼은 인덱스의 크기가 크게 증가하고 블록레벨 잠금(Block Level Locking)으로 인해 많은 부하가 유발될 수 있다. | * 수정이 빈번하게 발생하는 컬럼은 인덱스의 크기가 크게 증가하고 블록레벨 잠금(Block Level Locking)으로 인해 많은 부하가 유발될 수 있다. | ||
* 데이터 웨어하우스 업무에 주로 활용된다. | * 데이터 웨어하우스 업무에 주로 활용된다. | ||
+ | |||
+ | ** >> 데이터 웨어하우스 ** [[http:// | ||
+ | |||
+ | === 생성절차 === | ||
+ | - 인덱스를 생성하고자 하는 컬럼의 값들을 찾기 위해 테이블 스캔을 한 후 | ||
+ | - bitmap generator에 의해 컬럼값, start rowid, end rowid , bitmap을 갖는 인덱스 엔트리를 생성한다. | ||
+ | - 2단계에서 생성된 Bitmap들을 B-tree구조에 넣기 쉽도록 key값과 start rowid 순으로 정렬한다. | ||
+ | - 마지막 단계에서는 정렬된 인덱스 엔트리들을 단순히 B-tree구조로 삽입한다. | ||
=== 제한사항 == | === 제한사항 == | ||
줄 146: | 줄 155: | ||
- COL3 < 100 인 비트맵을 읽어 머지(BITMAP MERGE)를 수행하여 하나의 비트맵을 만든다. | - COL3 < 100 인 비트맵을 읽어 머지(BITMAP MERGE)를 수행하여 하나의 비트맵을 만든다. | ||
- **2**와 **3**에서 수행한 결과에 대해 OR연산(BITMAP OR)을 수행하여 조건을 만족하는 최종결과 비트맵을 만들고 ROWID로 변형하여 테이블을 엑세스 한다. | - **2**와 **3**에서 수행한 결과에 대해 OR연산(BITMAP OR)을 수행하여 조건을 만족하는 최종결과 비트맵을 만들고 ROWID로 변형하여 테이블을 엑세스 한다. | ||
- | |||
- | * **제한사항** | ||
- | * 파티션테이블에서 Global Index에는 비트맵인덱스를 만들 수 없다. | ||
- | * 비트맵인덱스는 RBO(Rule Base optimizxer) mode에서는 사용될 수 없다. | ||
===== B-Tree 인덱스와 비트맵(Bitmap)인덱스의 비교 ===== | ===== B-Tree 인덱스와 비트맵(Bitmap)인덱스의 비교 ===== |