[ Oracle - Clustered Table ]


1. Cluster

   . 정의 : 특정 조건을 기준으로 데이터를 하나로 묶어서 관리하는 기법


2. Clustered Table

   . 정의 : 특정 조건을 기준으로 데이터를 하나로 묶어서 관리되는 테이블

   . index : clustered index 존재

             clustered index는 null도 존재

   . non clustered : 보통 table 및 index


3. 장.단점

   . 특정그룹을 찾을 때 특정Block을 모두 읽으면 되므로 읽기가 아주 빠르다.

   . 같은 데이터 블록을 공유하는 1개 이상의 테이블의 그룹

     - join에서 같이 자주 사용되는 공통 컬럼을 공유

     - disk i/o가 감소 됨 (join을 안해도 되므로)

     - 클러스터 테이블을 조인하는 경우 엑세스 시간이 향상된다.

     - 단점 : Full Tablescan은 일반 테이블보다 느리다.


4 생성방법 

 - 2개의 테이블이 자주 join되어 하나의 cluster에 저장하는 예제

  a. Cluster만들기

  b. Cluster Index만들기

  c. Cluster table 생성

 

  CREATE CLUSTER cls_emp_dept(deptno NUMBER(2))

    SIZE 600

    TABLESPACE users

    STORAGE (INITIAL 200K

                NEXT 300K

                MINEXTENTS 2                

                MAXEXTENTS 20

                PCTINCREASE 33);


   CREATE INDEX IDX_CLS_EMP_DEPT

     ON CLUSTER CLS_EMP_DEPT

     TABLESPACE users;


   --아래 예제는 기존 EMP테이블을 활용한 예제.

   --보통 컬럼들을 기술해서 만들어야 됨

   CREATE TABLE EMP1

      CLUSTER CLS_EMP_DEPT(DEPTNO)

      AS

      SELECT * FROM EMP;


    CREATE TABLE DEPT1

       CLUSTER CLS_EMP_DEPT(DEPTNO)

       AS

       SELECT * FROM DEPT;


   --조회

   SELECT e.empno, e.deptno, e.rowid, d.rowid, d.deptno

      FROM emp1 e, dept1 d

     WHERE e.deptno = d.deptno

    ORDER BY e.deptno;


   

      . ROWID가 거의 비슷하다. 같은 저장 공간이기 때문

      . ROWID : OFBR : Object(6자리) + file(3자리) + block(6자리) + row(3자리)

        - 위 결과를 보면 다른 Object 이지만 같은 file, 같은 block에 저장 됨


   

      . 


5. 특징

   . 지정된 컬럼값의 순서대로 row를 저장시키는 방법

   . 하나 혹은 그 이상의 테이블을 같은 클러스터내 저장 가능

   . 엑세스 기법이 아니라 액세스 효율향상 시키는 물리적 저장기법

   . 검색의 속도는 높여주나 DML속도는 저하된다.

   . 분포도가 넓을수록 유리


6. 사용하기 적합한 조건

   . 6블럭 이상의 테이블

   . 넓은 범위를 자주 액세스 해야 하는 경우

   . 인덱스를 사용한 처리가 부담이 되는 넓은 분포도

   . 여러 개의 테이블이 빈번히 조인되는 경우

   . 수정이 자주 발생하지 않는 경우 (clustered 가 된 컬럼. 위예제는 deptno)

     - 이유 : clustered된 컬럼이 변경되면 레코드가 delete, insert가 발생 하기 때문











담배, 술, 삼각기밥

10대, 20대..., 10대 담배필때.. 구몬이 3일 밀렸어

'(DB) Oracle 튜닝 > 쌍용튜닝교육' 카테고리의 다른 글

실행계획 - join  (0) 2018.02.10
자주 사용하는 SQL  (0) 2018.02.10
DB 튜닝. hint 목록  (0) 2018.01.27
Oracle-실행계획 개별  (0) 2018.01.27
Oracle-튜닝.수행내역 이력을 파일로 저장  (0) 2018.01.27
Posted by 농부지기
,