SQL/심화11 SQL튜닝 -Chapter04.조인튜닝 -3- 해시 조인 NL 조인은 인덱스를 이용한 조인 방식이므로 인덱스 구성에 따른 성능 차이가 심하다. 인덱스를 아무리 완벽하게 구현해도 랜덤 I/O 때문에 대량 데이터 처리 불리하고, 버퍼캐시 히트율에 따라 들쭉날쭉한 성능을 보인다. 소트 머지 조인과 해시 조인은 조인 과정에 인덱스를 이용하지 않기 때문에 대량 데이터 조인할 때 NL 조인보다 훨씬 빠르고, 일정한 성능을 보인다. 소트 머지 조인은 항상 양쪽 테이블을 정렬하는 부담이 있는데, 해시 조인은 그런 부담도 없다 해시 조인 기본 메커니즘 해시 조인은 두 단계로 진행된다. 1. Build 단계 : 작은 쪽 테이블 (Build Input)을 읽어 해시 테이블(해시 맵)을 생성. 2. Probe 단계 : 큰 쪽 테이블(Probe Input)을 읽어 해시 테이블을 탐색.. 2023. 8. 21. SQL튜닝 - Chapter04.조인튜닝 -2- 소트 머지 조인 조인 컬럼에 인덱스가 없을 때, 대량 데이터 조인이어서 인덱스가 효과적이지 않을 때, 옵티마이저는 NL 조인 대신 소트 머지 조인이나 해시 조인을 선택한다. 해시 조인을 사용할 수 없는 상황에서 대량 데이터를 조인하고자 할 때 소트 머지 조인은 유용하다. 소트 머지 조인과 해시 조인을 알려면 PGA에 대한 설명이 선행되어야 한다. SGA VS PGA SGA ( System Global Area 또는 Shared Global Area ) 공유 메모리 영역. 서버 프로세스와 백그라운드 프로세스가 공통으로 액세스하는 데이터와 제어 구조를 캐싱하는 메모리 공간. PGA ( Process / Program / Private Global Area ) 자신만의 고유 메모리 영역. 프로세스에 종속적인 고유 데이터를 저.. 2023. 8. 21. SQL튜닝 - Chapter04.조인튜닝 -1- NL조인 NL조인 ( Nested Loop 조인 ) - 조인의 기본. - 인덱스를 이용한 조인이다. = 조인을 할 경우 왠만한 상황에선 NL조인을 사용한다. 데이터가 대용량일땐 해시조인을 사용하는 것이 좋다. NL조인 기본 메커니즘 기본적으로 범위가 작은 테이블을 왼쪽에 두어야한다. NL조인은 Outer와 Inner 양쪽 테이블 모두 인덱스를 이용한다. 테이블이 커도 인덱스를 활용하기 때문에 빠르다 NL 조인 실행계획 제어 ordered 힌트는 FROM절에 기술한 순서대로 조인하라고 옵티마이저에 지시할 때 사용. use_nl 힌트는 NL 방식으로 조인하라고 지시할 때 사용. 힌트를 같이 사용했으므로 사원 테이블 기준으로 고객 테이블과 NL방식으로 조인하라는 뜻 select /*+ ordered use_nl(B) .. 2023. 8. 19. SQL튜닝 - Chapter03. 인덱스튜닝 -2- 인덱스 스캔 효율화 -- WHERE C1 = 'B' -- WHERE C1 = 'B' AND C2 = 3 -- WHERE C1 = 'B' AND C2 >= 3 -- WHERE C1 = 'B' AND C2 는 C1 = 'B'이면서 C2 = 3 인 부분이 시작점이고 C2 = 4인 곳을 만나는 순간 스캔을 멈춘다. 따라서 수평적 탐색의 화살표가 가장 짧다. 반대로 은 C1이 BETWEEN으로 첫번째 조건부터 범위가 매우 넓다. 그러므로 6개 조건 중에 가장 화살표가 길다. 인덱스 스캔 효율성 1번 WHERE C1 ='성' AND C2 ='능' AND C3 ='검' 2번 WHERE C1 ='성' AND C2 = '능' AND C4 ='선' 1번과 2번의 결과이다. 2번 같은 경우에는 사실상 조건이 2개인것과 다름.. 2023. 8. 18. 이전 1 2 3 다음