SGA(System Global Area)는 빠른 입출력을 위해 사용된다. 그 구성요소중 하나가 바로 DB버퍼 캐시
1) 블록 단위 I/O
하나의 레코드에서 하나의 컬럼만 읽게 되더라도 레코드 전체가 속한 블록 전체를 읽게 된다.
2) 버퍼 캐시의 구조
버퍼 캐시는 데이터 블록을 내포하고 있으며, 해시 테이블 구조로 관리된다.
* 데이터 블록을 해싱 하기위해서 사용되는 것이 데이터 블록 주소(DBA, Data Block Address)
* 각각의 버퍼 헤더를 연결 하는것이 해시 체인(hash chain)
* 해시 체인은 래치(Latch)에 의해 보호된다.(같은 리소스에 대한 액세스를 직렬화하는 일종의 Lock)
* cache buffers chains래치
- 해시체인에 동시에 접속되는것을 방지하며, 여러 해시 체인을 동시에 관리
- 버퍼 캐시에 연결된 체인구조를 보호한다.
- 버퍼 헤더에 Pin을 설정할때도 사용된다.
* LRU(least recently used)
- 사용빈도가 높은 데이터 블록이 위주로 사용되도록 하는 알고리즘(빈도가 낮은 데이터 블록 부터 밀어냄)
- MRU(Most Recently Used) end ----> LRU(least recently used) end
1) Dirty 리스트(=LRUW(LRU Write)) : 캐시 내에서 변경 됐지만, 아직 디스크에 기록되지 않은 Dirty 버퍼 블록을 관리.
2) LRU 리스트 : 아직 Dirty 리스트로 옮겨지지 않은 나머지 버퍼 블록을 관리
(해당 리스트를 보호하기 위한 래치 : cache buffers lru chain래치)
* 버퍼 상태
1) Free 버퍼 : 비어있는 상태이거나, 언제든 사용되어도 무방한 상태(사용될 시 Dirty 버퍼로 변경)
2) Dirty 버퍼 : 버퍼 캐시되어으나 아직 디스크에 기록되지 않은 버퍼 블록(디스크에 기록될시 Free버퍼로 변경)
3) Pinned 버퍼 : 읽기,쓰기 작업을 위해 액세스 되고 있는 버퍼 블록
출처
조시형,『오라클 성능 고도화 원리와 해법Ⅰ』
'자격증 > SQLP' 카테고리의 다른 글
[오라클 성능 고도화] 오라클 아키텍처 - 01. 기본 아키텍처 (0) | 2020.07.27 |
---|