본문 바로가기

sql_tuning

Section4. Buffer Cache 내부의 Block 유형 및 Buffer Pools 유형

728x90
반응형

[출처: 오라클 성능 분석과 인스턴스 튜닝 핵심 가이드]

Buffer Cache 내 블록 유형 (Free/Dirty/Pinned block)

  • Free buffer: 아직 데이터가 할당되지 않은 buffer block(unused) 이거나, pinned buffer 였다가 서버 프로세스의 사용이 종료되고 update 되지 않은 buffer(Clean). 디스크에서 읽은 신규 데이터를 할당 가능함. 
  • Pinned buffer: 데이터가 할당 된 후 수정되지 않고 사용자 세션에 의해 사용되고 있는 buffer block
    • 서버 프로세스 사용 종료 시 clean.
  • Dirty buffer: 데이터가 이미 할당된 이후에 다시 데이터가 수정되었으나, 아직 disk 상의 data file에 write 되지 못한 buffer block.
    • 일정 수준 이상의 Dirty buffer가 쌓이면 그때서야 disk 상의 data file에 write 함. (I/O 성능 때문에)

 

Database Buffer Pools의 유형

  • DW성, 이력 통계 데이터와 같은 대용량의 데이터를 Access해야 할 경우 큰 Block Size 가 상대적으로 유리
  • 이를 위해 DB_BLOCK_SIZE에 기술 된 SIZE와 다른 BLOCK 크기를 가진 테이블 스페이스 생성 가능(2K, 4K, 16K, 32K 등)
  • 이와 같은 용도로 생성 된 테이블스페이스 상의 Object에 Access 할 경우 Non Default Buffer Pool을 이용 (다양한 사이즈를 정의해서 쓰겠다는 말임) 
    • Default Buffer Cache: DB_BLOCK_SIZE 에서 정의 된 Block Size로 Block이 할당 된 Buffer Cache로서, 별도의 Storage Option이 없으면 Table/Index 등의 Object는 Default Buffer Cache에 등록
      • Default Buffer Cache는 Aging Out(AO) 이라고, 잘 사용 안하면서 오래 된 Block을 내려놓음.
    • Keep Buffer Cache: Table/Index 등의 Object를 Keep Buffer 에 등록하면 Buffer Cache에서 내려오지 않고 지속적으로 유지 됨(AO 영향을 안 받음, 계속 올라가 있음). 자주 쓰이는 조회성 데이터의 메모리 Hit Ratio를 높이기 위해 사용
    • Recycle Buffer Cache: 비교적 Access 빈도가 적은 Object가 메모리에 올라오게 되면 해당 Transaction이 종료 된 후에는 다시 메모리에서 제거 됨. 거의 사용되지 않음
Buffer Pool 유형 Buffer Cache 유형 크기 설정 파라미터
Default Buffer Pool Default Buffer Cache DB_CACHE_SIZE
Keep Buffer DB_KEEP_CACHE_SIZE
Recycle Buffer DB_RECYCLE_CACHE_SIZE
Non Default Buffer Pool Non Default Buffer Cache DB_nK_CACHE_SIZE
(n은 Kbyte block size. 2,4,8,16,32 중 하나)

 

728x90
반응형