2. DB 버퍼 캐시
2010.05.23 18:58
- DB BUFFER CACHE: SGA 의 일부분으로 DATAFILE의 입출력시 사용시 사용되는 캐시 영역(블록단위)
블록 단위 I/O
오클은 블록단위로 I/O가 이루어짐
메모리 버퍼와 데이터파일간 읽기,쓰기 모두 블록단위로 처리
Single block read: 인덱스 경유시 한번에 한블록씩 읽어들임
Multiblock read : Full Scan시에는 성능 향상을 위해 한번에 여러블록을 읽어 들임
DBWR (BG 프로세서) : 버퍼캐시로부터 변경된 블록을 주기적으로 데이터 파일에 기록하는 작업 수행(블록단위)
SQL 성능을 좌우하는 가장 중요한 지표는 액세스하는 블록개수이며 옵티마이져에도 가장큰영향을 끼침
버퍼 캐시 구조
해시 함수에 데이터 블록주소(DBA) 를 입력해 리턴받은 값(해시값) 이 같은 블록들을 해시버킷에
연결리스트 구조로 해시 체인으로 연결찾고자 하는 데이터 블록 주소를 해시값으로 변환후 해시버킷 체인을 따라 스캔
→ 성공 하면 읽고, 실패하면 디스크로부터 읽은후 해시체인에 연결(다른사용자들을 위해서) 후 읽기진행버퍼 헤더만 체인에 연결, 실제 데이터 값이 필요해지면 버퍼해더에 있는 포인터를 이용해 다시 버퍼 블록을 찾아가는 구조