Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- SQLD
- 코딩테스트
- 데이터베이스
- db
- 프로그래머스
- 츠케멘전문점
- QuickBI
- 코호트분석
- 리텐션
- 태블로
- 보테가마지오
- 미리캔버스
- tableau
- SQLP
- 소트튜닝
- 알리바바클라우드
- 광교맛집
- 알리클라우드
- 낙곱새
- 낙곱새맛집
- 비즈니스인텔리전스
- SQL
- 츠케멘맛집
- 아이폰스냅
- 결혼식식권
- 멘타카무쇼
- 연화식당
- SQL처리과정
- 마이보케스냅
- 데이터시각화
Archives
- Today
- Total
자면서 공부하기
[SQLP] 소트 튜닝(Sort Tuning) 파헤치기 (1) 본문
1. 소트가 뭐야
소트 Sort
소트(sort)는 정렬을 가리키는 영어 낱말이다.
2. 메모리 소트와 디스크 소트
- (오라클) 소트는 PGA에 할당한 Sort Area에서 수행하며 PGA가 부족하면 Temp 테이블 스페이스를 사용
- 메모리 소트 : PGA 내에서 소트 완료할 경우 'Internal Sort' 또는 'Optimal Sort'라고도 한다.
- 디스크 소트 : Temp 테이블 스페이스까지 사용하여 소트 완료할 경우 'External Sort'라고도 한다.
소트는 최대한 발생하지 않도록 SQL을 작성해야 하고, 소트가 불가피하다면 메모리 내에서 수행을 완료할 수 있도록 해야 함
소트는 메모리 집약적일 뿐만 아니라 CPU 집약적임
3. 어떨 때 소트가 발생할까?
단순히 order by 쓸 때만 정렬되는게 아니라 다양한 경우에서 소트가 발생하더라
(1) Sort Aggregate
- 전체 로우를 대상으로 집계를 수행 할 때 나타나지만 실제로 데이터를 정렬하지 않고 Sort Area만 사용함
- sum, max, min, avg, count 함수
select sum(sal), max(sal), min(sal), avg(sal) from emp
(2) Sort order by
- 정렬된 결과집합을 얻고자 할 때 사용
select * from emp order by sal desc;
(3) Sort Group By
- 소팅 알고리즘을 사용해 그룹별 집계를 수행할 때 나타난다.
- 소팅 알고리즘을 사용해 값을 집계한다는 뜻일 뿐 결과의 정렬을 의미하지는 않는다. 따라서 정렬된 그룹핑 결과를 얻고자 한다면, 실행계획에 설령 'Sort Group By'라고 표시되더라도 반드시 Order By를 명시해야 한다.
- Group By 절에 Order By절을 명시하지 않으면 대부분 Hash Group By 방식으로 처리한다.
select deptno, sum(sal), max(sal), min(sal), avg(sal)
from emp
group by deptno
-- 부서번호를 기준으로 ORDER BY 하므로 SORT GROUP BY 오퍼레이션 사용
SELECT DEPT_NO, MAX(SAL) FROM 직원 GROUP BY DEPT_NO ORDER BY DEPT_NO;
-- ORDER BY가 없으므로 HASH GROUP BY 오퍼레이션 사용
SELECT DEPT_NO, MAX(SAL) FROM 직원 GROUP BY DEPT_NO;
(4) Sort Unique
- 중복 레코드를 제거하는 소트 오퍼레이션으로 UNION, Distinct 사용 시 나타난다.
(5) Sort Join
- 소트 머지 조인을 수행할 때 나타남
(6) Window Sort
- 윈도우 함수(분석 함수)를 수행할 때 나타남
SELECT MGR , ENAME , SAL , SUM(SAL) OVER (PARTITION BY MGR) MGR_SUM FROM EMP;
'Database' 카테고리의 다른 글
[SQLP] 인덱스 손익분기점 : 인덱스가 느릴 수 있다고 ?! (0) | 2024.08.06 |
---|---|
[SQLP] SQL 처리과정과 I/O (0) | 2024.06.25 |
[SQLP] 소트 튜닝(Sort Tuning) 파헤치기 (2) (1) | 2024.06.11 |