본문 바로가기

ORACLE/ORACLE_Admin

ORACLE 데이터베이스 버퍼 캐시

반응형

SQL 문장 실행

버퍼캐시에 결과 값들을 가지는 오라클 블록이 존재하는지 확인

블록이 데이터 버퍼 캐시에 존재하면 거기서 읽어옴

만약 없다면 디스크에서 I/O를 발생시키며 읽어옴

 

 

## 버퍼 자체의 상태

  • Free
    • 아직 사용하지 않고 있는 버퍼로서 언제든지 사용가능한 버퍼
    • Free Buffer는 오라클 서버 프로세스에 할당되어 사용되고, 사용 후 Dirty Buffer가 된 Buffer들은 DBWR에 의해 디스크에 쓰여진 후 다시 Free Buffer가 되어 오라클 서버 프로세스에 의해 재사용되는 작업을 반복

 

  • Dirty
    • 데이터베이스 버퍼 캐시에서 변경되어 디스크로 내려 적히기를 기다리는 버퍼, 
    • 이후 체크 포인트 대상 버퍼

 

  • Pinned
    • 해시 버퍼로부터 버퍼 락을 획득하고 현재 작업 중인 버퍼, 버퍼 락을 반환할 때까지 Pinned 상태유지

 

  • Clean
    • 이미 사용된 적이 있지만 지금은 Read consistent 버전의 이미지를 가지고 있는 버퍼
    • 디스크에 있는 블록 이미지와 동일한 블록 이미지를 의미

 

※ read consistent : 가장 최근에 커밋된 데이터를 보여주는 것

 


 

## 버퍼 읽기 쓰기 시점에 따른 버퍼의 상태

  • Consistent Mode Get
    • 커밋되지 않은 트랜잭션이 두 개의 로우를 변경하는 동안 다른 프로세스가 읽기 요청이 들어오게 되면 변경된 버퍼 이미지가 아닌 읽기 요청이 들어온 바로 그 시점에서의 데이터를 돌려줘야 함
    • 언두 데이터를 생성하여 새로운 버퍼를 생성하고 이 버퍼를 돌려줌

 

  • Current Mode Get
    • 커밋되지 않은 트랜잭션이 두 개의 로우를 변경하는 동안 다른 프로세스가 쓰기(Update, Delete) 요청이 들어오게 되면 트랜잭션이 커밋되지 않은 버퍼를 돌려줘야 함
    • 변경된 데이터 블록 이미지를 돌려줌

 


 

## 데이터베이스 버퍼 캐시 영역 구성 방법

세종류의 Pool을 사용함

 

  • Default 버퍼 풀 (db_cache_size)
    • SGA 내부에 구성하는 기본 데이터베이스 버퍼 캐시 영역

 

  • Keep 버퍼 풀 (db_keep_cache_size)
    • 자주 재사용 되는 블록들을 저장하려는 경우 추가적으로 생성하는 부분

 

alter table scott.emp
storage(buffer_pool keep);

 

  • Recycle 버퍼 풀(db_recycle_cache_size)
    • 언제든지 제거 되어 재사용 될 수 있는 공간
    • 자주 재사용되지 않는 데이터 블록을 임시적으로 저장하게 될 공간을 설정해주는 개념
    • ex. 풀스캔을 수행해야 할 때 자주 사용되지 않는 블록들도 불러지니, 이상황에서 default 버퍼 풀 대신 Recycle 버퍼 풀을 사용하여 임시적으로 공간을 설정해줌
alter table scott.emp
storage(buffer_pool recycle);

 

 

 

 

 

반응형

'ORACLE > ORACLE_Admin' 카테고리의 다른 글

Undo 테이블스페이스, Redo Log 파일  (0) 2023.04.17
ORACLE 파라미터 파일 | alter system, session  (0) 2023.04.16
ORACLE Checkpoint  (0) 2023.04.16
ORACLE Alert 로그 확인 | Trace 파일  (0) 2023.04.13
ORACLE 구동 및 종료  (0) 2023.04.11