SQL에서 정렬을 하기 위해서는 SORT 영역이 필요하다.
SORT 영역이 작을 경우, 데이터를 정렬 하기 위하여 Temp 공간을 사용하게 되며, 이로 인하여 쿼리 성능이 저하될 수 있다.
SORT를 메모리에서만 하는지 TEMP 공간을 사용하는지에 따라서 Optimal / One Pass / Multi Pass 로 구분되어 진다.
Optimal : Sort가 PGA 영역에서 모두 이루어짐
One Pass : Sort 영역의 메모리 공간에서 한번에 정렬이 이루어 지지 않아서, Temp영역을 이용하여 한 번의 Merge 작업
을 통해 정렬을 완료 함.
Multi Pass : Merge 작업이 2회 이상 발생 함.
SORT 영역은 WORKAREA_SIZE_POLICY 파라메터에 의해서 자동으로 관리 되거나, 수동으로 관리 된다.
WORKAREA_SIZE_POLICY=AUTO
PGA_AGGREGATE_TARGET 파라메터에 저장된 값을 고려하여 정렬 영역의 크기를 결정 함.
이 때 최대로 사용할 수 있는 크기는 _SMM_MAX_SIZE 파라메터와 _SMM_PX_MAX_SIZE(병렬작업) 의 값으로 확인 할 수 있다.
_SMM_MAX_SIZE와 _SMM_PX_MAX_SIZE 설정값은 kb 임
WORKAREA_SIZE_POLICY=MANUAL
SORT_AREA_SIZE 값을 사용하여 최대 크기를 지정 함.
테스트를 통하여 SORT시에 사용 되어 지는 메모리의 양을 확인해 볼 수 있다.
위의 테스트 결과 SORT에 필요한 메모리 양과 사용되어지는 TEMP의 양을 확인 할 수 있다.