h3.해쉬클러스터액세스
- 해쉬 함수에 의해서 만들어진 해쉬값을 이용하여 클러스터링을 하는 방법
- 동일한 해쉬값을 가진 데이터를 동일한 블록 내에 저장하여 클러스터 팩터를 높인다
- 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되는 테이블
SELECT ... WHEN CLUSTER_KEY = ...; - 전체 사용량의 추정 가능 한 경우
- 우편번호 테이블 같은 경우 유리
Hash Cluster 사용시 불리한 경우
- 계속해서 증가하는 테이블을 저장하기 위해서는 Cluster를 사용하지 말 것.
- Full Table Scan 을 자주하는 table은 Cluster를 만들지 말 것.
- Cluster Key Value를 자주 변경하는 Application이라면 Cluster를 사용하지 말 것.
- LIKE, <>, <, <=, >, >= 등의 조건으로 비교 되는 경우
실행계획
NESTED LOOPS
TABLE ACCESS (BY INDEX ROWID) OF 'EMP'
INDEX (RANGE SCAN) OF 'DEPT_IDX' (NON-UNIQUE)
TABLE ACCESS (HASH) OF 'EMP_HASH'
=> 해쉬엑세스는 인덱스를 경유하지 않기 때문에 이와같이 바로 테이블을 해쉬로 액세스했다는 표현으로 나타난다.