SGA와 PGA

devkwon·2024년 6월 27일
0

SGA(System Global Area)

전체 세션 간 공유되는 메모리
Mysql에서는 Global Memory, PG에서는 Shared Memory라고 불린다.
DB의 데이터 및 제어정보를 포함하고 있다.

  • Shared Pool
    유저 간에 공유할 수 있는 다양한 구성요소를 캐시에 저장
  • Database Buffer Cache
    데이터베이스에서 검색된 데이터 블록을 캐시에 저장
  • KEEP Buffer Pool
    메모리에 데이터를 오랫동안 보존하도록 튜닝된 데이터베이스 버퍼 캐시
  • Recycle Buffer Pool
    메모리에서 블록을 신속하게 재사용 또는 제거하도록 튜닝된 특별한 유형의 데이터베이스 버퍼 캐시

  • nK Buffer cache
    기본 데이터베이스 블록 크기와 다른 블록 크기를 저장하도록 설계

  • Redo Log Buffer
    nstance 복구에 사용되는 리두 정보가 디스크에 저장된 물리적 리두 로그 파일에 기록될 때까지 해당 정보를 저장

  • Large Pool
    특정 대용량 프로세스 및 I/O 서버 츠로세스에 대한 대용량 메모리 할당을 제공하는 선택적 영역

  • Java Pool
    JVM(Java Virtual Machine) 내의 모든 세션별 Java 코드 및 데이터에 사용

  • Streams Pool
    오라클 스트림에서 캡처 및 적용에 필요한 정보 저장

PGA(Program Global Area)

세션 별로 하나씩 존재하는 메모리 공간.
Mysql에서는 Local Memory, PG에서는 Backend Memory라고 불린다.

  • Sort Area: 정렬을 위해 사용되는 영역.

  • Hash Area: 해시 조인에 필요한 해시 테이블 생성 및 활용을 위해 사용되는 영역.

  • Bitmap Merge Area: 비트맵 조인이나 비트맵 생성 등에 대응하기 위한 영역.

SGA vs PGA 속도비교

같은 메모리라더라도 SGA는 모든 세션에서 접근할 수 있는 공유자원이기 때문에 동시성 문제를 제어해야한다.
따라서 동시성 문제를 고려하지 않는 PGA 접근 속도가 더 빠르다.
이러한 점을 기반으로 NL 조인보다 소트 머지 조인이나 해시 조인이 더 나은 성능을 보인다.

참고 :
https://blog.naver.com/93hyuna/220638901109
https://one-armed-boy.tistory.com/entry/SGA-vs-PGA-in-Oracle

0개의 댓글