Sort Area 크기 조정 

 - Sort Area 크기 조정을 통한 튜닝의 핵심은, 디스크 소트가 발생하지 않도록 하는 것을 

   1차 목표로 삼고 불가피할 때는 Onepass 소트로 처리되도록 하는 데에 있다. 


PGA 메모리 관리 방식의 선택 

 - 데이터 정렬, 해시 조인, 비트맵 머지, 비트맵 생성 등을 위해 사용하는 메모리 공간을 

   'Work Area'라고 부르며, sort_area_size, hash_area_size, bitmap_merge_area_size, 

   create_bitmap_area_size 같은 파라미터를 통해 조정한다. 


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

 - auto 모드에서 단일 프로세스가 사용할 수 있는 최대 Work Area 크기는 인스턴스 기동 시 

   오라클에 의해 내부적으로 결정되며, _smm_max_size 파라미터를 통해 확인 가능하다. 

 - SGA는 sga_max_size 파라미터로 설정된 크기만큼 공간을 미리 할당한다. 이와 대조적으로, 

   PGA는 자동 PGA 메모리 관리 기능을 사용한다고 해서 pga_aggregate_target 크기 만큼의 

   메모리를 미리 할당해 두지는 않는다. 이 파라미터는 workarea_size_policy를 auto로 설정한 

   모든 프로세스들이 할당받을 수 있는 Work Area의 총량을 제한하는 용도로 사용된다. 


수동 PGA 메모리 관리 방식으로 변경 시 주의사항 

 - manual 모드로 설정한 프로세스는 pga_aggregate_target 파라미터의 제약을 받지 않는다. 

   따라서 manual 모드로 설정한 많은 세션에서 Sort Area와 Hash Area를 아주 큰 값으로 

   설정하고 실제 매우 큰 작업을 동시에 수행한다면 가용한 물리적 메모리가 고갈돼 

   페이징이 발생하면서 시스템 전체 성능을 크게 떨어뜨릴 수 있다. 

 - 특히, workarea_size_policy 파라미터를 manual로 설정한 상태에서 병렬 쿼리를 사용하면 

   각 병렬 슬레이브 별로 sort_area_size 크기만큼 Sort Area를 사용할 수 있다는 사실을 

   바드시 기억해야 한다.  

 - sort order by나 해시 조인등을 수행할 때는 사용자가 지정한 DOP의 2배수만큼의 병렬 Slave가

   떠서 작업을 수행하므로 위 쿼리가 수행되는 동안 128개의 프로세스가 각각 최대 2GB의 

   Sort Area를 사용할 수 있다. 

 - 따라서 manual 모드에서 병렬 Degree를 크게 설정할 때는 sort_area_size와 hash_area_size를 

   반드시 확인해야 한다. 


PGA_AGGREGATE_TARGET의 적정 크기 

 - 오라클의 권고 값 

     OLTP 시스템 : ( Total Physical Memory x 80% ) x 20 %  

     DSS 시스템 : ( Total Physical Memory x 80% ) x 50 % 

 - 이것은 일반적인 권고사하일 뿐이며 애플리케이션 특성에 따라 모니터링 결괄르 바탕으로 

   세밀한 조정이 필요하다. 대부분 Optimal 소트 방식으로 수행되고 나머지 일부만 

   Onepass 소트 방식으로 수행되는 것을 목표로 삼아야 한다. 

+ Recent posts