일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- job관리
- DATABASELINK
- autocommit설정
- 통계정보복구
- oracle
- PROFILE EXPDP
- 대량dml튜닝
- 오블완
- 티스토리챌린지
- Linux
- datadir 변경
- MariaDB기본디렉토리변경
- postgreql 오브젝트 조회
- public synonym EXPDP
- ssh접속오류
- sqlp시험일정
- 리눅스
- inlist
- 오라클인덱스힌트
- mariaDB
- mariaDB설치오류
- 데이터csv생성
- sqlp공부방법
- 오라클기동
- num_index_keys
- 실제플랜조회
- 통계정보백업
- Connect Storage Engine
- sqlp합격후기
- 오라클
- Today
- Total
IT study
[SQLP] Hash Join 정리 본문
해시 조인
해시 조인은 둘 중 작은 집합(Build input)을 읽어 Hash Area에 해시 테이블을 생성하고, 반대쪽 큰 집합(Probe input)을 읽어 해시 테이블을 담색하면서 조인하는 방식으로 소트머지조인과 NL조인이 효과적이지 못할 때 사용
1. 기본 메커니즘
1) Build 단계 : 작은 쪽 테이블(Build Input)을 읽어 해시테이블(해시맵) 생성
2) Probe 단계 : 큰 쪽 테이블(Probe Input)을 읽어 해시맵을 탐색하면서 조인
2. 플랜 읽는 법
3. Hash 조인의 Build INPUT 처리
1) 2개의 테이블 조인에서는 leading이나 ordered 힌트에 의해 먼저 읽는 첫번째 테이블이 BUILD input
2) Swap_join_inputs / no_swap_join_inputs 힌트 활용하여 build input 선정
4. Hash 조인 특징
1) 해시테이블을 PGA 영역에 할당하여 래치 획득 과정없이 데이터 탐색
2) 작은 쪽 집합을 읽어 Hash Area에 저장하므로, 디스크 쓰는 작업이 거의 일어나지않음. ( Hash Area 벗어날 정도로 큰 경우 성능 저하)
3) 해시 조인도 Build Input 과 Probe Input 각 테이블을 읽을 때 DB 버퍼캐시를 경유하고 인덱스를 이용하기도 한다.
5. Hash Join 성능포인트
1) 한 쪽 테이블이 Hash Area에 담길 정도로 충분히 작아야 함
( Hash Area 벗어날 정도로 큰 경우 Disk I/O 발생, 성능 저하)
2) Build Input 해시 키 컬럼에 중복 값이 거의 없어야 함
( 중복값이 많다면 하나의 버킷에 많은 엔트리가 달리고 해시버킷 스캔하는 과정에서 성능 저하)
6. Hash Join 사용이 효과적일 때
1) 소트 머지 조인을 사용하기엔 두 테이블이 커 소트부하가 클때
2) NL조인에서 inner쪽 테이블 로의 조인액세스량이 많아 random 액세스 부하가 심할때
3) 조인 조건 컬럼에 적절한 인덱스가 없어 NL조인 비효율
4) 쿼리수행시간 ↑, 수행빈도 ↓, 배치성, DW/OLAP성 대량데이터 조인
'자격증 > SQLP (완료)' 카테고리의 다른 글
[SQLP] 52회 1과목 데이터모델링의 이해 시험문제 복기 (0) | 2025.03.10 |
---|---|
[SQLP] SQL 분석도구 (0) | 2025.02.13 |
[SQLP] SQL 트레이스 CALL 통계 결과 분석( 핵심노트) (1) | 2025.02.12 |
[SQLD] 그룹 함수 ( ROLLUP, CUBE, GROUPING SETS ) (2) | 2025.02.11 |
[SQLD] 오라클 정규표현식 (0) | 2025.02.10 |