[DB] 5장. 소트 튜닝
·
Study/친절한 SQL 튜닝
1. 소트 연산에 대한 이해 SQL 수행 도중 가공된 테이터 집합이 필요할 때, 오라클은 PGA와 Temp 테이블 스페이스를 활용한다. (소트머지조인, 해시조인, 데이터 소트와 그룹핑등이 대표적!)지금부터 데이터를 소트하거나 그룹핑하는 과정을 살펴보자.🔎 소트 수행 과정소트는 기본적으로 PGA에 할당한 Sort Area에서 이루어진다.Sort Area(메모리 공간)가 다 차면, 디스크 Temp 테이블스페이스를 활용한다.Sort Area에서 작업을 완료할 수 있는지에 따라 소트를 두 가지 유형에 나눈다.1. 메모리 소트( In-Memory Sort )'Internal Sort'라고도 함전체 데이터의 정렬 작업을 메모리 내에서 완료하는 것2. 디스트 소트 (To-Disk Sort )'External Sor..
[DB] 4장. NL조인
·
Study/친절한 SQL 튜닝
1. NL조인 🔎 NL조인(Nested Loop)의 기본 메커니즘SQL이 탄생하기 전에는 조인하는 프로그램을 개발자가 직접 작성해야했다. → JAVA 이중for문 for(i=0; ifor outer in 1..100 loop for inner in 1..100 loop     dms_output_line(outer||':'||inner);   end loop;end loop;🔎 NL조인 ( Nested Loops Join )인덱스를 이용한 조인Outer, Inner 양쪽 테이블을 모두 사용한다.Outer쪽 테이블은 Table Full Scan 하더라라도 한번만 거치기 때문에 인덱스가 필수적이지 않는다.Inner쪽 테이블은 인덱스를 사용해야된다. 인덱스를 사용하지 않으면 Outer 루프에서 읽은 건..
[DB] 3장. 인덱스 튜닝(2)
·
Study/친절한 SQL 튜닝
3. 인덱스 스캔 효율화IOT, 클러스터, 파티션은 테이블 랜덤 액세스를 최소화하는데 효과적인 저장구조이지만, 운영환경에서는 성능 검증을 위해 많은 테스트를 진행해야 하므로 어려움이 있다. 그러므로 운영환경에서 가능한 일반적인 튜닝 기법은 인덱스 컬럼추가를 사용한다. 🔎 인덱스 탐색-- 조건절 1 where C1 = 'B'-- 조건절 2 (스캔량 줄임)where C1 = 'B' and C2 = 3-- 조건절 3 (스캔량 줄임)where C1 = 'B' and C2 >= 3-- 조건절 4 (스캔량 줄임)where C1 = 'B' and C2  ※ 인덱스 스캔 효율이 좋은지 나쁜지는 알 수 있는 방법은? > SQL트레이스 사용🔎 액세스 조건과 필터 조건  인덱스 스캔하는 단계에 처리하는 조건절은 액세스 ..