본문 바로가기
IT/Database

소트 튜닝 (sort 오퍼레이션)

by 성준하이 2024. 1. 1.
반응형

SQL 수행 중 Sort 가 필요한 경우 dbms는 정해진 메모리 공간에 sort area 를 할당하고 정렬을 수행하곤 한다.

Oracle은 PGA(Private Global Area) 에 Sqlserver 는 버퍼캐시에 저장을 하곤 한다.

 

소트를 발생시키는 오퍼레이션은 아래와 같다.

 

  1. Sort Aggregate : 전체 로우를 대상으로 집계를 수행할 때 나타나며, 아래와 같이 Oracle 실행계획에 ‘sort’라는 표현이 사용됐지만 실제 소트가 발생하진 않는다. SQL Server 실행계획엔 ‘Stream Aggregate’라고 표시된다.
  2. Sort Order By : 정렬된 결과집합을 얻고자 할 때 나타난다.
  3. Sort Group By : Sorting 알고리즘을 사용해 그룹별 집계를 수행할 때 나타난다.
  4. Sort Unique : 선택된 결과집합에서 중복 레코드를 제거하고자 할 때 나타난다. Union 연산자나 아래와 같이 Distinct 연산자를 사용할 때가 대표적이다.
  5. Sort Join : Sort Merge Join을 수행할 때 나타난다.
  6. Window Sort : 윈도우 함수를 수행할 때 나타난다.

 

sort 튜닝의 성능을 데이터에 양에 따라 많이 성능에 영향을끼친다.

그러므로 아래와 같은 사항들을 고려해볼수 있다.

■데이터 모델 측면에서의 검토
 - 정규화 및 반정규화 적절하게 사용

■소트가 발생하지 않도록 SQL 작성
 - Union 대신 UnionAll

 - Distinct 를 Exists 서브쿼리로
■인덱스를 이용한 소트 연산 대체
 - 인덱스를 활용하여 min max 계산

■소트 영역을 적게 사용하도록 SQL 작성
 - top N 사용

■소트 영역 크기 조정

 

반응형

댓글