Oracle Admin 강좌 (Oracle9i)
해쉬 클러스터 1 0 8,265

by 김정식 해쉬 클러스터 클러스터 HASH CLUSTER HASHKEYS CLUSTER [2007.06.15]


해쉬 클러스터(Hash Cluster)란?

  - 해쉬 함수에 의해서 만들어진 해쉬값을 이용하여 클러스터링을 하는 방법 이다

  - 동일한 해쉬값을 가진 데이터를 동일한 블록 내에 저장하여 클러스터 팩터를 높인다

  - Hash Function을 이용하여 Cluster Key Column에 대한 Row를 찾아 간다.

  - Hash Function(Cluster Key Value) → Hash Key Value

  - 어떤 rows를 입력하거나 찾기 위해 Hash Function을 이용한다

  - HASHKEYS * SIZE 파라미터에 의해서 초기 저장공간의 크기(Extent)가 결정된다.

  - 해쉬 클러스터는 생성시에 미리 물리적 디스크 공간을 확보하므로 데이터 증가가 심하게 발생하는 경우는 적절하지 않다

 

Hash Cluster 사용시 유리한 경우

  - WHERE 절에 EQUALITY CONDITION을 자주 사용하는 문장에 의해 자주 ACCESS되는 테이블

  - 전체 사용량의 추정 가능 한 경우

  - 우편번호 테이블 같은 경우 유리

 

Hash Cluster 사용시 불리한 경우

  - 계속해서 증가하는 테이블을 저장하기 위해서는 Cluster를 사용하지 말 것.

  - Full Table Scan 을 자주하는 table은 Cluster를 만들지 말 것.

  - Cluster Key Value를 자주 변경하는 Application이라면 Cluster를 사용하지 말 것.

  - LIKE, , <, <=, >, >= 등의 조건으로 비교 되는 경우

 

HASHKEYS parameter

  - Hash 키 값의 전체 개수 (해쉬 클러스터에서 예상되는 키 값의 갯수를 지정)

 

SIZE parameter

  - 같은 클러스터 키 값을 갖는 행 전부에 의해 사용되는 공간을 정의.

  - SIZE의 값을 결정할 때는 충돌 가능성을 줄일 수 있도록 다소 높은 값을 지정하는 것이 현명하다.

 

HASH Cluster 생성 예제

① 해쉬 클러스터 생성
 
SQL> CREATE CLUSTER hash_cluster (sn_number  NUMBER(4))
     TABLESPACE data1
     SIZE 500
     HASHKEYS 40;
    

② 해쉬 테이블 생성
 
SQL> CREATE TABLE BOOKID (
       SN       NUMBER(4),
       BOOKNAME    VARCHAR2(10),
       SALESPRICE  NUMBER(9),
       RETAILPRICE NUMBER(9),
       STOCK       NUMBER(6))
     CLUSTER hash_cluster(SN);
    

③ 해쉬 클러스터 수정
 
SQL> ALTER CLUSTER hash_cluster 
      PCTFREE 20 
      PCTUSED 50
      STORAGE (NEXT 256K  PCTINCREASE 0  MAXEXTENTS 50);
    

④ 해쉬 클러스터 삭제
 
SQL> DROP CLUSTER hash_cluster INCLUDING TABLES;
    

 

클러스터가 유용한 상황

조건 인덱스 해쉬
균일 키 분포
자주 갱신되지 않는 키
자주 조인하는 마스터와 디테일 테이블
예상 가능한 키 값의 갯 수
키 값과 = 조건으로 비교되는 쿼리 문장

  • - 키 값의 분포가 균일할 때, 중복된 데이터의 분포도가 균일하다..
  • - 자주 갱신되면 클러스터에 악영향을 끼친다.
  • - 인덱스 클러스터의 다중테이블 클러스터로 사용하면 좋다.
  • - 해쉬 클러스터의 크기는 지정된 파라미터에 기초 함
  • - = 조건은 해쉬 클러스터, BETWEEN AND 조건은 인덱스 클러스터가 유리함

- 강좌 URL : http://www.gurubee.net/lecture/1964

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입