메뉴 건너뛰기

bysql.net

2._DB_버퍼_캐시

2012.03.04 18:02

시와처 조회 수:10429

  • DB Buffer Cache : 사용자 데이터를 읽고 쓰는 과정에서 사용 되는 SGA의 구성 요소 이다.

1. Block 단위 I/O

  • 오라클 I/O의 단위는 블록이다.
    • 메모리 버퍼 캐쉬에서 버퍼 블록을 액세스
    • 데이터 파일의 데이터 를 DB Buffer Cache로 적재
    • Dirty Buffer를 데이터 파일에 저장 
 

 I/O 속성

 설 명  

 Single Block read

- Index를 경우한 테이블 Access 

 Multi Block read

- Table Full Scan 

- DBWR의 Dirty Buffer 를 Data file 적재 작업

- 성능 향상을 위해 한버에 여러개의 블록을 읽어 들임 


※ Block 단위 I/O 는 SQL 성능의 척도 중 하나가 Block 의 개수임을 의미한다.


2. 버퍼 캐쉬구조

  • 해쉬 테이블구조로 관리
    • 해쉬 키 : 데이터 블록 주소 (DBA : Data Block Address)
    • 해쉬 함수 : DBA 를 입력해 해쉬 값 리턴
    • 해쉬 버켓 : 해쉬 함수에의해 리턴 받은 해쉬 값을 저장
    • 해쉬 체인  : 동일한 해쉬 값에 의한 버퍼 헤더를 Link List로 연결한 구조 (실제 데이터 값은 버퍼 헤더에 있는 포인터에 의해 버퍼 블록을 찾아감)

            1.jpg

 

3. 캐쉬 버퍼 체인

  • 해쉬 채인은 Latch에 의해 보호
  • cache buffers chains : 여러개의 해쉬 체인을 동시에 관리
    • 9i 부터 Shared Mode와 Exclusive Mode 로 관리
    • Shared Mode : 해쉬 체인을 스캔하여 필요한 블록 검색
    • Exclusive Mode : 체인 구조 변경 (체인 추가, 삭제) 혹은 Buffer Pin 설정시
  • _db_block_hash_buckets : 해쉬 버킷의 개수
  • _db_block_hash_latches : 해쉬 래취의 개수
  • 해쉬 버캣 : 해쉬 체인 = 1:1 을 목표 => 해쉬 체인을 찾고난후 추가적 스캔에 의한 비용을 최소화


4. 캐쉬 버퍼 LRU 체인

  • 유한한 자원인 메모리를 효율적으로 사용하기 위한 데이터 캐싱 기법으로 LRU(Least Recently Used) 알고리즘 사용
  • 캐쉬 버퍼는 LRU 체인에서도 관리 되어짐
  • LRU 알고리즘
    • 가장 최근에 사용한 Buffer Cache 를 MRU(Most Recently Used) End에 위치
    • Free Buffer 가 필요할 때 LRU(Least Recently Used) End 에 위치한 Buffer Cache부터 밀어냄
  • LRU List
    • Dirty List : Dirty Buffer Block 관리, LRUW (LRU Write) 리스트라고도 함
    • LRU List : Dirty List에 존재하지 않는 Block 관리 (Pinned Buffer,Free Buffer, Dirty List에 옮겨 가지 않은 Dirty Buffer)
    • 모든 Buffer Block는 둘중 하나에 반드시 속해 있다
    • LRU List를 보호 하기 위한 래치 : cache buffers lru chain
  • 버퍼 상태
    • Free Buffer : Instance 기동후 한번도 사용 하지 않은 버퍼 혹은 데이터를 사용 하였으나 변경되지 않았거나 변경후 데이터 파일과 동기화 되어 있는 상태
    • Dirty Buffer : 캐시된 후 데이터의 변경이 발생 되었으나 Data file에는 아직 기록되지 않은 상태
    • Pinned Buffer : 읽기 혹은 변경을 위해 현재 액세스 되고 있는 버퍼 블록


번호 제목 글쓴이 날짜 조회 수
26 3._SQL트레이스 sapius 2012.04.04 26850
25 8._Statspack_AWR 시와처 2012.04.01 11485
24 7._Response_Time_Analysis_방법론과_OWI file 시와처 2012.04.01 5743
23 6._V$SYSTEM_EVENT 시와처 2012.04.01 3310
22 4._동시성_구현_사례 [1] dasini 2012.03.27 11696
21 5._오라클_Lock file 시와처 2012.03.26 12577
20 3._비관적_vs._낙관적_동시성_제어 dasini 2012.03.26 6185
19 2._AutoTrace 남송휘 2012.03.26 2920
18 1._Explain_Plan 남송휘 2012.03.26 4328
17 3장._오라클_성능_관리 남송휘 2012.03.26 2896
16 2._트랜잭션_수준_읽기_일관성 file AskZZang 2012.03.20 6145
15 1._트랜잭션_동시성_제어 AskZZang 2012.03.20 4667
14 11._Shared_Pool 박영창 2012.03.19 3163
13 10._대기_이벤트 박영창 2012.03.19 10373
12 9._Snapshot_too_old 박영창 2012.03.19 9734
11 8._블록_클린아웃 시와처 2012.03.19 12009
10 7._Consistent_vs._Current_모드_읽기 file 시와처 2012.03.18 5499
9 2장._트랜잭션과_Lock AskZZang 2012.03.17 5251
8 6._문장수준_읽기_일관성 file 정찬호 2012.03.12 57274
7 4._Redo file 남송휘 2012.03.12 5379