Infra/Database

DB 메모리 영역 SGA (Shared Pool, DB BufferCache, Redo Log Buffer 를 알아보자.

sdoaolo 2025. 4. 28. 00:02
728x90

 

 

 

 

 

SGA는 System Global Area의 약자로 

서버프로세스와 백그라운드프로세스가 공통으로 액세스하는 데이터와 제어구조를 캐싱하는 메모리공간이다. 

 

DB 버퍼 캐시 / 공유풀(라이브러리캐시/ 딕셔너리 캐시)  / Redo Log Buffer 세개에 대해서 알아보자. 

 

1. DB  Buffer Cache

 

데이터 조회와 변경등 실제 작업이 일어나는 공간이다. 

사용자가 조회/변경하려는 모든 데이터가 이곳에 존재한다.

 

 

 

여러 사용자는 동시에 I/O를 시도할 수 있다.

내부에 블록 상태를 3가지로 나누어 리스트를 통해 관리하고 있다고 한다.

  • Pinned Buffer : 다른 사용자가 사용중
  • Dirty Buffer : 현재 작업은 진행되지 않지만  다른 사용자가 내용 변경후 아직 데이터파일에 저장하지 않은 버퍼이다.  (다른 사용자 사용불가)
  • Free Buffer : 사용되지 않았거나,  Dirty Buffer에서 디스크로 저장되어 재사용가능해진 블록이다. 

 

버퍼 블록 상태를 관리하기 위해 LRU (가장 적게 이용된 순서) 리스트를 만들어 사용한다. 

가장 사용이 안됐거나, 이미 작업이 완료되어 덮어 써도 되는 블록을 찾아 덮어쓰게 된다.

 

 

2. 공유풀 (shared Pool)

라이브러리 캐시

  • 소프트 파싱할때 사용되는 공간 / 이미 수행되었던 SQL문장, 실행계획 등이 저장되어 있다.
  • LRU알고리즘으로 관리된다. 

 

딕셔너리 캐시

  • 구문분석/옵티마이저가 실행계획을 세울때 사용되는 주요 딕셔너리들이 Row 단위로 캐시되어있다.  
  • LRU알고리즘으로 관리된다. 


3. Redo Log Buffer 

데이터 변경이 생길경우 (DDL/DML) 해당 변경내용을 기록해두는 역할이다.

Redo Log Buffer - 변경된 내용을 기록하는 메모리공간

Redo log file - 버퍼의 내용을 디스크에서 저장해주는 파일

 

 

 

다음에는 소프트 파싱과 하드 파싱의 과정이 무엇인지 이해하고,

SQL의 재사용에 대해 알아보자.