2._DB_버퍼_캐시
2012.03.04 09:02
- 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로 연결한 구조 (실제 데이터 값은 버퍼 헤더에 있는 포인터에 의해 버퍼 블록을 찾아감)
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 : 읽기 혹은 변경을 위해 현재 액세스 되고 있는 버퍼 블록
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
6 | 5._Undo | dasini | 2012.03.11 | 25348 |
» |
2._DB_버퍼_캐시
![]() | 시와처 | 2012.03.04 | 10681 |
4 |
1._기본_아키텍처
![]() | AskZZang | 2012.03.02 | 8825 |
3 | 1_장._오라클_아키텍처 | AskZZang | 2012.03.01 | 5212 |
2 | 3._버퍼_Lock | 박영창 | 2012.02.23 | 7578 |
1 |
Front Page
![]() | 운영자 | 2012.02.20 | 131458 |