메뉴 건너뛰기

bysql.net

1.2 인덱스 일체형 테이블

  • B-Tree index (인덱스컬럼+RowID) : 인덱스 세그먼트 엑세스, RowID를 이용한 세그먼트 인덱스 총 2회 엑세스 발생
  • (* 분리형 구조는 인덱스를 엑세스할 때 처리범위가 넓어지면 부담이 증가함 )
  • 인덱스 일체형 테이블 : 인덱스만 엑세스하면 따로 테이블에 엑세스할 필요가 없음.

1.2.1 분리형과 일체형의 비교 (25page 표참고)


1.2.2 일체형 테이블의 구조 및 특징

     1) Rowid를 갖고있지 않음

         ☞  테이블과 인덱스를 모두 가지고 있음


     2) 기존방식(분리형)은 기존의 인덱스를 경유했을 때의 가장큰 부담은 각 인덱스 로우마다 임의의 위치에 흩어져 있는

         테이블을 액세스 하는 것 But, 일체형은 이 부분이 감소하기 때문에 넓은범위의 처리에서 탁월한 효과를 얻게 된다.

 

     3) Rowid를 가지지 않기 때문에 추가적인 인덱스는 Rowid 대신에 기본키를 사용해야한다.


     4) 추가적인 인덱스 생성이 가능하지만, 오직 기본키로만 액세스 해야 한다는 절대적인 제약을 약화 시키는 정도의 개념


     5) 단점: 로우의 길이의 변화에 따라 발생할 수 있는 오버플로우를 두려워하기때문

         ☞ 적절한 파라메터를 지정함으로써 이러한 단점을 많이 해소할 수 있다.


1.2.3 논리적 Rowid와 물리적주소

      1) 일체형테이블의 키값을 대변할 수 있는 기본키만이 데이터를 구분할 수 있는 유일한 방법이다.


      2) 일체형 테이블의 효과적인 활용을 위해서는 반드시 다양한 검색 패턴이 지원되어야 한다. 이를 위해 절대적으로 필요한 것은

         추가적인 인덱스 생성이다.

  •  B-tree 인덱스의 구조는 : 인덱스컬럼 + Rowid형태, 새로운 인덱스 생성을 위해 Rowid를 식별할 수 있어야한다.
  •  일체형에서는 rowid로 식별하기 어렵기때문에 기본키 이외에 새로운 인덱스를 생성하기 어려움 => 논리적 rowid 개념도입

     3) 일체형구조의 예시

  • 전자카탈로그나 키워드 검색용 테이블
  • 코드성 테이블
  • 색인 테이블
  • 공간정보 관리용 테이블
  • 대부분 기본키로 검색되는 테이블
  • OLAP 의 디멘젼테이블
  • 로우의 길이가 비교적 짧고 트랜잭션이 빈번하게 발생되지 않는테이블

     4) 일체형구조에서 추가적인 인덱스를 사용할 때 물리적 위치 정보를 사용하는 엑세스, 사용하지 않는 엑세스 수행절차


4-1) 물리적 위치 정보를 사용하지 않는경우

① 추가적인 인덱스를 엑세스 하여 기본키 정보를 얻는다

② 기본키로 데이터 블록을 엑세스 한다.


4-2) 물리적 위치정보를 사용하는 경우

① 추가적인 인덱스를 액세스 하여 물리적 위치정보를 참조한다

② 참조한 물리적 위치정보를 이용하여 데이터 블록을 액세스 한 후에 비교한다.

(이때 기본키 값이 같으면 물리적 위치정보가 유효한 것으로 간주하여 액세스를 종료한다.)

③ 만약 유효하지 않다면 다시 기본키로 액세스 하여 데이터 블록을 가져온다.



1.2.4. 오버플로우영역

     일체형 테이블을 생성할 때 부여한 이동에 대한 임계치에 도달하면 INCLUDING  절에서 지정한 컬럼 이후에 컬럼들은

     모두 오버플로우 영역에 저장된다. => 테이블 생성시 순서를 잘 결정할 필요가 있음.



1.2.5 일체형 테이블 생성(33page참고)

     1) ORGANIZATION INDEX : 일체형 테이블 생성을 정의하는 키워드


     2) TABLESPACE : 인덱스 영역이 저장될 테이블 스페이스를  지정


     3) PCTTHRESHOLD :  인덱스 블록 내에 예약된 공간의 백분율을 지정


     4) INCLUDING : 테이블 행을 인덱스와 오버플로우 영역으로 나눌 컬럼을 지정.

         : 여기에 지정된 컬럼이후의 컬럼은 모두 오버플로우 영역에 저장된다.


     5) OVERFLOW TABLESPACE : 지정된 임계값을 초과한 로우가 위치할 테이블 스페이스, 스토리지와 블록 활용 파라미터를

                                                 지정하는 절이다. 이절을 지정하지 않는다면 임계값을 초과한 로우들의 입력이 거부된다.

 

* 일체형에서는 사용자가 체인을 결정할 수 있으며, 그 결과에 따라 엑세스 성능이 달라질 수 있다.

그러므로 일체형 에서는 단순히 로우가 체인이 되었다 라는 의미보다 어떤모양으로 체인이 되었는지 중요하다.