- 해쉬 함수에 의해서 만들어진 해쉬값을 이용하여 클러스터링을 하는 방법 이다
- 동일한 해쉬값을 가진 데이터를 동일한 블록 내에 저장하여 클러스터 팩터를 높인다
- Hash Function을 이용하여 Cluster Key Column에 대한 Row를 찾아 간다.
- Hash Function(Cluster Key Value) → Hash Key Value
- 어떤 rows를 입력하거나 찾기 위해 Hash Function을 이용한다
- HASHKEYS * SIZE 파라미터에 의해서 초기 저장공간의 크기(Extent)가 결정된다.
- 해쉬 클러스터는 생성시에 미리 물리적 디스크 공간을 확보하므로 데이터 증가가 심하게 발생하는 경우는 적절하지 않다
- WHERE 절에 EQUALITY CONDITION을 자주 사용하는 문장에 의해 자주 ACCESS되는 테이블
- 전체 사용량의 추정 가능 한 경우
- 우편번호 테이블 같은 경우 유리
- 계속해서 증가하는 테이블을 저장하기 위해서는 Cluster를 사용하지 말 것.
- Full Table Scan 을 자주하는 table은 Cluster를 만들지 말 것.
- Cluster Key Value를 자주 변경하는 Application이라면 Cluster를 사용하지 말 것.
- LIKE, , <, <=, >, >= 등의 조건으로 비교 되는 경우
- Hash 키 값의 전체 개수 (해쉬 클러스터에서 예상되는 키 값의 갯수를 지정)
- 같은 클러스터 키 값을 갖는 행 전부에 의해 사용되는 공간을 정의.
- SIZE의 값을 결정할 때는 충돌 가능성을 줄일 수 있도록 다소 높은 값을 지정하는 것이 현명하다.
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;
조건 | 인덱스 | 해쉬 |
---|---|---|
균일 키 분포 | ○ | ○ |
자주 갱신되지 않는 키 | ○ | ○ |
자주 조인하는 마스터와 디테일 테이블 | ○ | |
예상 가능한 키 값의 갯 수 | ○ | |
키 값과 = 조건으로 비교되는 쿼리 문장 | ○ |
- 강좌 URL : http://www.gurubee.net/lecture/1964
- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^
- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.