by-nc-sa     개발자, DBA가 함께 만들어가는 구루비 지식창고!

14S_인덱스 클러스터 테이블

Version 1 by 기민용
on 11월 29, 2014 05:28.


 
compared with
Current by 기민용
on 11월 29, 2014 05:37.


 
Key
These lines were removed. This word was removed.
These lines were added. This word was added.

View page history


There are 1 changes. View first change.

 h1. 인덱스 클러스터 테이블
  
 - MSSQL, Sybase 의 클러스터 인덱스는 오라클의 클러스터와는 다르다. 오라클의 IOT 와 유사.
 - 오라클의 클러스터는 공통의 컬럼을 사용하는 테이블 그룹을 함께 저장하며, 연관된 데이터를 동일 블록에 함께 저장하도록 하는 방식이다.
  
 !그림_10-8.png!
  
 {code:sql}
 -- 클러스터 생성
 CREATE CLUSTER emp_dept_cluster(deptno NUMBER(2)) SIZE 1024;
 {code}
   
 - SIZE 옵션은 클러스터의 가장 중요한파라미터다.
 -- 한 블록에 저장할 수 있는 최대 클러스터 키의 수를 결정하며, 공간 사용에 가장 큰 영향을 미친다.
 -- 크기를 너무 크게 잡아서 각 블록에 단지 몇 개의 키만을 가지도록 한다면 필요한 공간보다 더 많은 공간을 사용하게 될 것이고
 -- 너무 작게 잡아서 과도한 데이터 체이닝이 발생한다면 하나의 블록에 데이터가 함께 저장된다는 클러스터의 장점에 반하는 결과가 초래할 것이다.
  
 {code:sql}
 -- 클러스터 인덱스 생성
 CREATE INDEX emp_dept_cluster_idx ON CLUSTER emp_dept_cluster;
 {code}
 {code:sql}
 -- 테이블 생성, Dept
 CREATE TABLE dept
 ( deptno NUMBER(2) PRIMARY KEY
 , dname VARCHAR2(14)
 , loc VARCHAR2(13)
 )
 CLUSTER emp_dept_cluster(deptno)
 ;
 {code}
 {code:sql}
 -- 테이블 생성, Emp
 CREATE TABLE emp
 ( empno NUMBER PRIMARY KEY
 , ename VARCHAR2(10)
 , job VARCHAR2(9)
 , mgr NUMBER
 , hiredate DATE
 , sal NUMBER
 , comm NUMBER
 , deptno NUMBER(2) REFERENCES dept(deptno)
 )
 CLUSTER emp_dept_cluster(deptno)
 ;
 {code}
  
 - 클러스터를 사용하지 않아야 하는 경우.
 -- 클러스터 테이블에 대량의 수정이 발생할 수 있는 경우
 --- 인텍스 클러스터는 DML 문의 성능, 특히 INSERT 문의 성능에 부정적인 영향을 미칠 수 있다.
 -- 클러스터 테이블에 대하여 전체 스캔을 수행할 때
 --- 단순히 한 테이 블을 전체 스캔하는 것보다 많은 테이블을 전체 스캔해야 한다.
 -- 테이블을 파티션해야 하는 경우
 --- 클러스터에 있는 테이블은 파티션을 구성할 수 없으며, 클러스터 도마찬가지다.
 -- 빈번하게 TRUNCATE와 데이터 적재를 수행해야 하는 경우
 --- 클러스터에 있는 테이블은 TRUNCATE할 수 없다.
 - 클러스터를 사용을 고려 하는 경우.
 -- 논리적으로 연관성이 높아 함께 조인된 결과정보를 자주 읽는다면 클러스터가 적합한 방법이 될 수 있다.
  
 h5. 인덱스 클러스터 테이블 요약
 - 클러스터 테이블은 물리적으로 데이터를 미리 조인할 수 있게 한다.
 - 동일한 데이터베이스 블록에 관련된 많은 테이블의 데이터를 함께 저장하기 위해서 클러스터를 사용한다.
 - 클러스터는 항상 함께 조인되거나 관련된 데이터의 집합(부서 10에 있는 모든 사람 등)을 얻기 위한 읽기 중심 의 수행에 적합하다.
 - 클러스터 테이블은 오라클이 캐시해야 하는 블록의 수를 감소시킨다.
 - 클러스터 테이블은 동일 부서에 있는 사원 10명을 위해서 10개 블록을 캐시하지 않고, 하나의 블록에 저장하여 버퍼 캐시의 효율성을 증대시킬 수 있다.
 - 부정적인 측면으로는 SIZE 파라미터를 정확하게 계산하여 설정하지 않는다면 공간활용에 비효율이 발생하고 대량의 DML 수행 시에는 성능이 느려질 수 있다.