본문 바로가기

프로그래밍/oracle

oracle - 클러스터

반응형

클러스터  

 


  디스크로부터 데이터를 읽어오는 시간을 줄이기 위해서 조인이나 자주 사용되는 

테이블의 데이터를 디스크의 같은 위치에 저장시키는 방법 입니다.

    

◈ 클러스터된 테이블과 클러스터 되지 않은 테이블의 차이 

 

   테이블이 처음 생성될 때 행은 일반적으로 세그먼트의 첫 익스텐트의 첫 블록부터 삽입됩니다.

   정규 테이블로 저장될 경우 EMP와 DEPT은 서로 다른 세그먼트에 위치하게 됩니다.

   이 말은 테이블이 자신들 고유의 블록을 사용한다는 뜻입니다.

   즉, EMP 테이블의 행을 저장하는데 사용된 블록은 DEPT 테이블의 데이터를 저장하지 않는다는 

   말입니다.    그 반대의 경우도 마찬가지입니다.


   테이블 EMP와 DEPT의 클러스터로 저장되면 동일 클러스터 세그먼트를 공유하게 

  됩니다. 이 세그먼트의 블록은 양 테이블의 행을 모두 저장할 수 있습니다.

 

   테이블이 클러스터로 저장되면 클러스터는 물리적 저장 단위가 되고 테이블은 논리적 엔티티   

   즉, 클러스터의 일부분가 됩니다. 

 

◈ 클러스터의 사용 장점 

 

  - 디스크 I/O를 줄여 줍니다. 그룹된 컬럼 데이터 행들이 같은 데이터 Block에 저장되기 

    때문 입니다.

  - 클러스터된 테이블 사이에 조인이 발생할 경우 그 처리 시간이 단축 됩니다. 

  - 클러스터키 열을 공유하여 한번만 저장하므로 저장 영역의 사용을 줄입니다. 

 

◈ 테이블 클러스터링의 특징 

 ⊙ 한 클러스터 키에 포함될 수 있는 컬럼의 최대 수는 16개 입니다. 

 ⊙ 클러스터는 데이터 조회 성능을 향상 시키지만 데이터 저장, 수정, 삭제 또는 

     한 테이블 전체 Scan의 성능을 감소 시킵니다.

 ⊙ 클러스터 하기 좋은 테이블 

    - 주로 조회가 자주 발생하고 수정이 거의 발생하지 않는 테이블

    - 컬럼안의 많은 중복 데이터를 가지는 테이블

    - 자주 Join되는 테이블

 ⊙ 클러스터 Key가 되지 좋은 컬럼

    - 데이터 값의 범위가 큰 컬럼

    - 테이블 간의 조인에 사용되는 컬럼

 ⊙ 클러스터 key가 되기 나쁜 컬럼

    - 특정 데이터 값이 적은 컬럼

    - 자주 데이터 수정이 발생하는 컬럼

    - LONG, LONG RAW 컬럼은 포함할 수 없습니다.

 

1. 인덱스클러스터

- 넌클러스터테이블은 조인을 하게되면 서로 소팅을 한 다음 머징한다.

- 공통되는 부분을 같은 블록에 저장하기 때문에 소팅하고 머징할 필요가 없다.

- Size는 클러스터Row의 최대길이보다 약간 크게

- 사이즈를 잘 지정해야 한다.

 

2. 해시클러스터

- 수억건에서 =조건일 때 성능이 좋다.

- PK로부터 해시함수를 통해 클러스터키를 따로 만든다.

- HASHIS를 사용하지 않으면 내부해시함수를 사용해 유일한 값을 만들어낸다. 실무에서는 값을 지정하지 않는다.

- HASHKEY : 저장될 행의 수

- SIZE : 1개행의 길이

 

 


반응형