-
11. 친절한 SQL 튜닝IT 서적/친절한 SQL 튜닝 2023. 10. 21. 20:45
소트 연산에 대한 이해
소트 수행 과정
- 소트는 기본적으로 PGA에 할당한 Sort Area에서 이뤄진다.
- Sort Area의 공간이 부족해지면 Temp Space를 활용한다.
메모리 소트 vs 디스크 소트
- 메모리 소트(In-Memory Sort) : 전체 데이터의 정렬 작업을 메모리 내에서 완료하는 것을 의미한다.
- 디스크 소트(To-Disk Sort) : 할당받은 Sort Area 내에서 정렬을 완료하지 못해 디스크 공간까지 사용하는 경우를 의미한다.
- 소트 연산은 처리할 데이터량이 많을 때는 디스크 I/O까지 발생하므로 쿼리 성능을 좌우하는데 매우 중요하다.
- 많은 서버 리소스를 사용하고 디스크 I/O가 발생하는 것도 문제지만, 부분범위 처리를 불가능하게 함으로써 OLTP 환경에서 애플리케이션 성능을 저하시키는 주요인이 되기도 한다.
소트 오퍼레이션
1. Sort Aggregate
- Sort Aggregate는 아래처럼 전체 로우를 대상으로 집계를 수행할 때 나타난다.
- 'Sort' 라는 표현을 사용하지만, 실제로 데이터를 정렬하진 않고 Sort Area를 사용한다는 의미로 이해하면 된다.
SELECT SUM(SAL) ,MAX(SAL) ,MIN(SAL) ,AVG(SAL) FROM EMP ;
2. Sort Order By
- Sort Order By는 데이터를 정렬할 때 나타난다.
SELECT * FROM EMP ORDER BY SAL DESC ;
3. Sort Group By
- Sort Group By는 소팅 알고리즘을 사용해 그룹별 집계를 수행할 때 나타난다.
SELECT DEP_NO ,SUM(SAL) ,MAX(SAL) ,MIN(SAL) ,AVG(SAL) FROM EMP GROUP BY DEP_NO ORDER BY DEP_NO DESC ;
- 위와같이, 부서번호 10, 20, 30, 40이 있을 경우 Sort Group By는 모든 사원들의 정보를 읽어와서 수행되는 것이 아닌 각 사원의 DtpNo정보만을 읽어 급여 정보를 읽는다. 사원이 수억 명이어도 단 네장의 메모지만 있으면 된다. 부서가 많지 않다면 Sort Area는 클 필요도 전혀 없다.
- 오라클 10gR2 버젼에서는 Hash Group By를 제공하기 시작했다. Group By 절 뒤에 Order By 절을 명시하지 않으면 이제 대부분 Hash Group By 방식으로 처리한다.
- Group By를 쓰고 Order By를 쓰면 성능이 나빠진다고 생각할 수 있지만, 실상은 그렇지 않다. 왜냐하면 DBMS는 Group By와 Order By 함께 수행시키기 때문이다.
'IT 서적 > 친절한 SQL 튜닝' 카테고리의 다른 글
13. 친절한 SQL 튜닝 (0) 2023.10.21 12. 친절한 SQL 튜닝 (0) 2023.10.21 10. 친절한 SQL 튜닝 (0) 2023.10.21 9. 친절한 SQL 튜닝 (0) 2023.10.21 8. 친절한 SQL 튜닝 (0) 2023.10.21