2015년 6월 2일 화요일

[MySQL] B-tree 인덱스 (2007)

(2007/01/02 18:34 작성)

출처: http://blog.naver.com/zordtwo/110011537204
1. B-tree 인덱스의 구조
                     [ B-tree 인덱스의 구조 ]


 ◈  B-트리 인덱스 구조

  - 인덱스 제일 위는 root로 인덱스의 다음 레벨을 가리키는 엔트리를 포함하고 있습니다. 
  - 다음 레벨은 branch 블록으로 마찬가지로 다음 레벨의 인덱스 블록을  가리킵니다. 
  - 최하층 레벨은 leaf노드로 테이블의 행을 가리키는 인덱스 엔트리를  포함하고 있습니다. 
  - leaf블록은 키 값의 내림차순은 물론 오름차순의 키 값으로 인덱스를 검색하는데 편리하도록
    양방향(doubling)으로 연결(link)되어 있습니다.
    
   
 ◈ 인덱스 Leaf 엔트리의 형식
   - 열 수와 잠금(locking)정보를 저장하는 엔트리 헤더
   - 키의 열 길이와 열 값이 차례로 정의된 쌍(pair)으로 된 값
     (이들 쌍의 갯수가  인덱스에 들어갈 수 있는 열의 최대치입니다.)
   - 키값을 포함하는 행의 ROWID
   - Leaf Block에만 ROWID Bolck이 있습니다.
 

2. 문법


[인덱스 생성 문법]
 - UNIQUE
 : unique 인덱스를 지정하는데 사용합니다.(NONUNIQUE가 기본값입니다.)
 - schema 
 : 인덱스/테이블의 소유자입니다.
 - index
 : 인덱스 이름입니다.
 - table
 : 테이블 이름입니다.
 - column
 : 열 이름입니다.
 - tablespace
 : 인덱스가 생성될 테이블스페이스를 나타냅니다.
 - PCTFREE
 : 생성시 새 인덱스 엔트리를 수용하기 위해 각 블록에 예약된 공간의 총량입니다.
   (총 공간에서 블록 헤더를 뺀 것을 백분율로) 
 - INITRANS
 : 각 블록에 미리 할당된 트랜잭션 엔트리의 수를 지정합니다. 
   (기본값은 최소값인 2 입니다.)
 - MAXTRANS
 : 각 블록에 할당될 수 있는 트랜잭션 엔트리의 수를 제한합니다. 
   (기본값은 255 입니다.)
 - STORAGE
 : 익스텐트가 인덱스에 할당되는 방법을 결정하는 스토리지 절을 나타냅니다.
 - LOGGING
 : 인덱스의 생성과 이후의 인덱스에 대한 작업이 리두 로그 파일에 기록 되도록
   명시합니다.(기본값) 
 - NOLOGGING
 : 인덱스 생성과 특정 유형의 데이터 로드가 리두 로그 파일에 기록되지 않도록 
   명시합니다.
 - NOSORT
 : 행이 데이터베이스에 오름차순으로 저장되어 있음을 명시합니다. 
   이 경우 오라클 서버는 생성시 행을 정렬하지 않습니다


3. B-tree인덱스 생성 예제

SQL>CREATE INDEX scott.emp_ename_idx
       ON scott.emp(ename)
       TABLESPACE idx
       PCTFREE 30
       STORAGE(INITIAL 200K
                       NEXT 200K
                       PCTINCREASE 0
                       MAXEXTENTS 50);

인덱스가 생성되었습니다.    

댓글 없음:

댓글 쓰기