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 소트 방식으로 수행되는 것을 목표로 삼아야 한다.
'ORACLE > SQLP' 카테고리의 다른 글
성능고도화 6-2. 파티션 Pruning (0) | 2016.12.26 |
---|---|
성능고도화 6-1. 테이블 파티셔닝 (0) | 2016.12.26 |
성능고도화 5-6. Sort Area를 적게 사용하도록 SQL 작성 (0) | 2016.12.26 |
성능고도화 5-5. 인덱스를 이용한 소트 연산 대체 (0) | 2016.12.26 |
성능고도화 5-4. 소트가 발생하지 않도록 SQL 작성 (0) | 2016.12.26 |