데이터베이스/Join (3) 썸네일형 리스트형 Hash Join - join 조건을 hash값으로 만들어 join 하는 방식 - 대용량 처리 시 성능에 영향을 주는 random access와 sorting에 대한 해결책으로 등장 - equal join에서만 수행 가능(Hash값이 크다고 실제 값이 크지는 않음) - 작은 table과 큰 table의 join에서 사용하면 성능에 좋음 - 작은 table을 driving table(build input)으로 잡아야 함 - 다른 join방법보다 CPU자원을 많이 사용(Hash Area 등) - 병렬 처리를 이용한 Hash Join은 대용량 데이터 처리를 위한 최적의 방법을 제공 Sort Merge Join - join 되는 table을 각각 엑세스하여 sort한 결과를 차례로 scan하면서 merge를 수행 - sorting 된 집합을 scan하면서 merge를 하기 때문에 join 자체는 빠르지만, sort 작업에 대한 부담이 큼 - 비동등 join(. like 등)이 가능함 - 충분한 메모리 활용이 가능하고, 병렬처리를 통해 빠르게 정렬할 수 있다면 대량의 데이터 조인에 유용하게 적용 가능 Nested Loop Join - outer table(driving table)의 데이터를 읽어 inner table의 데이터와 1건씩 join 하는 방법 - outer table의 결정과 처리 범위에 따라 성능이 결정 됨 - Inner table에 join 조건에 인덱스가 없으면 outer table에서 추출 된 건수 만큼 table full scan을 타게 됨 - OLTP 환경에서 주로 사용(부분 범위 처리) - 아래와 같은 매커니즘(2중 for문)으로 동작한다고 이해하면 된다 for (int i = 0; i < outer.length; i++){ -- outer loop for (int j = 0; j < inner.length; j++){ -- inner loop ..... } } 이전 1 다음