Hash Partition관련 Test 1 10 5,363

by drakula [기타] Hash Partition [2010.06.13 09:29:33]


SQL> create table t_hash1
(c1 number, c2 varchar2(10))
partition by hash(c1)
(partition p1 tablespace users,
 partition p2 tablespace users);
 
 
SQL> create index t_hash1_idx on t_hash1(c1) local;


SQL>insert into t_hash1
select level, 'GHLEE'
from dual
connect by level <=1000;

SQL>commit;


-- 각 Partition의 갯수

SQL> select count(*) from t_hash1 partition (p1);

COUNT(*)  
-----------
    495
   
SQL> select count(*) from t_hash1 partition (p2);

COUNT(*)  
-----------
    505

1 rows selected.

-- Partition추가
SQL> alter table t_hash1 add partition p3 tablespace users;

Statement Processed.

--  각 partition의 갯수

SQL> select count(*) from t_hash1 partition (p1);

COUNT(*)  
-----------
    234

SQL> select count(*) from t_hash1 partition (p2);

COUNT(*)  
-----------
    505


SQL> select count(*) from t_hash1 partition (p3);

COUNT(*)  
-----------
    261


결론 : 선형적 해쉬 알고리즘에 의해서 처음 partition에서 나누어서 p3에 저장 하는 방식.
그러므로 hash partition의 갯수는 2의 배수로 설정하는 것이 좋음^^

by 현 [2010.06.13 10:12:02]
hash partition의 갯수는 2의 n승배 만큼 생성하는거 아니었어??

by 타락천사 [2010.06.13 14:11:34]
깔끔한 테스트 ㅇ.ㅇ
2*N 으로 하자 고고씽

by drakula [2010.06.13 18:00:16]
오빠~ 맞아요~ 2*n
4개면은 8개 생성해야지~ 데이터가 균등하게 분할되고
8개면은 16개로 늘리는게 데이터가 균등하게 분할되니깐 2*n

by drakula [2010.06.13 18:01:13]
저번 스터디때도 논의 됐지만;;
hash partition은 보통 add 안하죠~~ ㅋㅋㅋ
다시 생성하는 방식을 많이 사용하니깐요~
이건.. 누가 물어봐서 테스트 해보니;; 이러 더라구요~ ㅋ

by 현 [2010.06.13 21:01:04]
그렇지?
난 해시파티션을 add 할 생각 자체도 안해 봤네..

걍 무조건 2의 n승만큼 생성해야고만 알고 있었어...(주입식 교육의 병폐....)

by 신나고픈나^^ [2010.06.14 09:35:34]
선형적 해쉬 알고리즘에 의해서 처음 partition에서 나누어서 p3에 저장 하는 방식??<==이게 어떤 의미인지 좀 쉽게 설명 좀 부탁 드려도 될까요??

by drakula [2010.06.14 09:48:37]
아...ㅠ.ㅠ 저도 선형적인 해쉬 알고리즘이 정확하게 먼지는 잘 모르겠는데요~
해쉬 알고리즘에 공간을 나누는 방식이 여러가지가 있는데 그중에서 오라클은 선형적 해쉬 알고리즘을 사용한데요~

-Linear Hashing Alogorithm의 주소 확장방법은 한번에 모든 버킷을 분할하지 않고 첫 번째 버킷부터 분할해 가면서 마지막 버킷 분할이 끝나면 처음 버킷 에서부터 다시 시작하는 싸이클 방식 임 .

이런이유로.. 첫번째 파티션에서 분할해서 3번째 파티션으로 확장하고, 하나더 추가하면은 이번에는 2번째 파티션을 쪼개서 4번째로 확장한다고 합니다!!!

저도 잘 몰라서;;; 설명이 이해가 될련지 모르겠네요~

by 신나고픈나^^ [2010.06.14 11:22:00]
설명 감사합니다^^*

by TeLl2 [2010.06.14 14:03:25]
정확한 내용인지는 알수 없으나(영어의 한계로다가...)
대충 중간의 그림(??)설명을 보면 이해가 갈듯하네요..

http://www.concentric.net/~Ttwang/tech/sorthash.htm
http://en.wikipedia.org/wiki/Linear_hashing

by drakula [2010.06.14 14:30:18]
오빠~!!! 이게 머.. 그림이야;;;;
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입