h1.07 Sort Area 크기 조정

h3.(1) PGA 메모리 관리 방식의 선택

  • Work Area = 데이터 정렬, 해시 조인, 비트맵 머지, 비트맵 생성 등을 위해 사용되는 메모리 공간
  • sort_area_size, hash_area_size, bitmap_merge_area_size,create_bitmap_area_size 파라미터를 통해 조정
  • 8i까지 DBA가 각 work area 기본값 조정
  • 9i부터 oracle이 자동으로 PGA를 관리함. pga_aggregate_target 파라미터를 통해 인스턴스 전체가 이용가능한 PGA 총크기 지정
  • 오라클이 시스템 부하 정도에 따라 자동으로 각 세션에 메모리 할당하며 인스턴스 기동조중 크기 조정 가능
  • 9i부터 default "workarea_size_policy=auto" : *_area_size 파라미터는 모두 무시되며 오라클이 내부적으로 계산한 값 사용
  • 사용자에 의한 *_area_size 관리는 "workarea_size_policy=manual"로 가능

(2) 자동 PGA 메모리 관리 방식 하에서 크기 결정 공식

  • auto 모드에서 단일 프로세스가 사용할 수 있는 최대 work area 크기는 _smm_max_size 파라미터에 의해 결정됨 (크기는 KB)

SELECT a.ksppinm name, b.ksppstvl VALUE
FROM   sys.x$ksppi a, sys.x$ksppcv b
WHERE  a.indx = b.indx  AND a.ksppinm = '_smm_max_size' ;

NAME                                VALUE
----------------------------------- ------------------------------
_smm_max_size                       20480

h5.# 9i 부터 10gR1

  • _smm_max_size=least((pga_aggregate_target * 0.5), (_pga_max_size * 0.5))

h5.# 10gR2 부터

  • pga_aggregate_target <= 500MB : _smm_max_size = pga_aggregate_target * 0.2
  • 500MB < pga_aggregate_target <= 1000MB : _smm_max_size = 100MB
  • pga_aggregate_target > 1000MB : _smm_max_size = pga_aggregate_target * 0.1

h5.# pga의 max size

  • _pga_max_size = _smm_max_size * 2

SGA는 sga_max_size 크기만큼 공간을 미리 할당
PGA는 필요시 할당 pga_aggregate_target는 workarea_size_policy=auto 설정시 work_area의 총량을 제한하는 용도

h3.(3) PGA_AGGREGATE_TARGET 의 적정 크기

h5.# 오라클 권고

  • OLTP : (Total Physical Memory * 80%) * 20%
  • DSS : (Total Physical Memory * 80%) * 50%

h3.(4) sort area 할당 및 해제

h5.# 할당

  • 8버전 이전 : sort_area_size 만큼 미리 할당
  • 8버전 부터 : db_block_size 단위로 필요한 만큼 조금씩 할당. 최대 sort_area_size 만큼 할당

h5.# 해제

  • 8i 까지 : 프로세스가 해제 할때까지 os에 반환하지 않음
  • 9i 부터 : 사용하지 않는 공간은 즉각 반환