PGA란 무엇인가?
PGA(Program Global Area)는 오라클 데이터베이스의 각 서버 프로세스에 할당되는 비공유 메모리 영역 입니다. 이 영역은 SQL문 처리, 세션 정보 저장, 정렬 작업 등 다양한 메모리 집약적 작업을 수행하는데 사용됩니다. PGA의 효율적인 관리는 데이터 베이스 성능에 직접적인 영향을 미치므로 매우 중요 합니다.

PGA 튜닝의 중요성
PGA를 적절히 튜닝하지 않으면 다음과 같은 문제가 발생할 수 있습니다.
- 쿼리 실행 속도 저하
- CPU 사용률 증가
- 메모리 부족 현상
따라서 PGA 튜닝은 전반적인 데이터베이스 성능 향상을 위해 필수적 입니다.
자동 PGA 메모리 관리
오라클은 자동 PGA 메모리 관리 기능을 제공하여 PGA 튜닝을 간소화 합니다. 이 모드에서는 오라클이 PGA_AGGREGATE_TARGET 파라미터를 기반으로 PGA 메모리를 동적으로 할당합니다.
PGA_AGGREGATE_TARGET 값 설정
- 총 물리적 메모리의 80%를 오라클 인스턴스에 할당합니다.
- 이 중 50%를 PGA에 할당합니다.
예를 들어, 시스템에 4GB의 물리적 메모리가 있다면: PGA_AGGREGATE_TARGET = (4GB * 0.8) * 0.5 = 1.6GB
PGA 튜닝 전략
1. 초기 PGA_AGGREGATE_TARGET 값 설정
- OLTP 시스템 : 가용 메모리의 20%
- DSS 시스템 : 가용 메모리의 50%
2.워크로드 모니터링
대표적인 워크로드를 실행하고 성능을 모니터링 합니다. V$PGASTAT 뷰를 사용하여 PGA 사용량 통계를 확인할 수 있습니다.
3.PGA 조언 통계 활용
V$PGA_TARGET_ADVICE와 V$PGA_TARGET_ADVICE_HISTOGRAM 뷰를 사용하여 PGA_AGGREGATE_TARGET 값 변경이 성능에 미치는 영향을 예측할 수 있습니다.
4.동적 PGA 관리 활용
오라클은 워크로드에 따라 PGA 메모리를 동적으로 조정합니다. 예를 들어 PGA_AGGREGATE_TARGET이 10GB이고 조정가능한 PGA가 5GB일 때
- 한세션이 5GB 작업 영역이 필요한 정렬을 수행하면 5GB를 할당받습니다.
- 두 세션이 동일한 정렬을 수행하면 각각 2.5G씩 할당 받습니다.
5.DBMAS_PGA_TUNING 패키지 사용
오라클은 DBMS_PGA_TUNING 패키지를 제공하여 PGA를 자동으로 튜닝할 수 있습니다. 이 패키지는 세션별 PGA 사용량을 분석하고 최적화 제안을 제공합니다.
PGA 모니터링 방법
- V$PGASTAT 뷰 사용 : PGA 메모리 사용량에 대한 인스턴스 레벨 통계를 제공 합니다.
- V$PROCESS 뷰 사용 : 각 프로세스의 PGA 메모리 사용량을 확인할 수 있습니다.
- V$SQL 뷰 사용 : SQL 문별 PGA 메모리 사용량을 분석할 수 있습니다.
PGA 튜닝 시 주의사항
- 과도한 메모리 할당 주의 : PGA에 너무 많은 메모리를 할당하면 시스템 리소스가 낭비될 수 있습니다.
- 워크로드 패턴 분석 : 애플리케이션의 특성에 맞게 PGA를 튜닝해야 합니다. OPTP와 DSS시스템은 서로 다른 PGA 설정이 필요할 수 있습니다.
- 정기적인 모니터링 : 데이터베이스 워크로드는 시간에 따라 변할 수 있으므로 정기적으로 PGA 사용량을 모니터링하고 필요에 따라 조정해야 합니다.
- SGA와의 균형 : PGA와 SGA 간의 적절한 균형을 유지해야 합니다. 한쪽이 너무 많은 메모리를 할당하면 다른쪽의 성능이 저하 될 수 있습니다.
결론
PGA 튜닝은 오라클 데이터베이스 성능 최적화의 핵심 요소 입니다. 자동 PGA 메모리 관리를 활용하고, 워크로드를 지속적으로 모니터링하며, 오라클에서 제공하는 다양한 도구와 뷰르르 사용하여 PGA를 효과적으로 관리할 수 있습니다. 적적할 PGA 튜닝을 통해 쿼리 성능을 향상시키고, 리소스 사용을 최적화 하며, 전반적인 데이터베이스 효율성을 높일 수 있습니다.
'IT > Database' 카테고리의 다른 글
[Oracle 튜닝] 오라클 공유 풀(Shared Pool) 관리 방안 (0) | 2025.01.28 |
---|---|
[Oracle 튜닝] 오라클 버퍼 캐시 히트율 개선 기법 (0) | 2025.01.27 |
[Oracle 튜닝] 오라클 SGA(System Global Area) 튜닝 방법 (1) | 2025.01.26 |
[Oracle 튜닝] 서브쿼리 최적화 기법 (0) | 2025.01.26 |
[Oracle 튜닝] 오라클 힌트(Hint) 사용법과 주의사항 (1) | 2025.01.24 |