자주 사용되는 데이터 블록들의 메모리 저장 공간
데이터 버퍼 캐쉬는 SQL을 수행할 때 필요한 데이터를 메모리에 저장하여 Logial Read/Write를 수행하기 위한 공간이다. 기본 데이터 버퍼 캐쉬의 크기는 DB_CACHE_SIZE 파라메터로 결정된다.
데이터 버퍼 캐쉬는 LRU 알고리즘에 의해 관리된다.
SGA 영역 중에서 데이터 버퍼 캐쉬가 가장 많은 크기를 할당한다.
Physical Read : 데이터 버퍼 캐쉬에 데이터가 존재하지 않으면 서버 프로세스가 필요한 데이터 블록을 디스크로부터 데이터 버퍼 캐쉬로 캐싱
Logical Read : 엑세스하고자 하는 데이터 블록이 데이터 버퍼 캐쉬에 존재.(디스크를 엑세스 할 필요X)
데이터 버퍼 캐쉬를 사용하는 프로세스
- 서버 프로세스 : 디스크로부터 필요한 데이터 블록을 엑세스하여 데이터 버퍼 캐쉬에 저장
- DBWR(Database Writer) : 데이터 버퍼 캐쉬에 저장되어 있는 블록 중 더티 버퍼(변경된 데이터 블록)를 디스크로 저장
오라클의 I/O단위는 데이터 블록이다.
서버 프로세스와 DBWR는 데이터 블록 단위로 읽고 기록한다. 즉, 하나의 로우가 필요한 경우 해당 데이터가 저장돼 있는 데이터 블록을 모두 데이터 버퍼 캐쉬로 엑세스 해야한다.
서버 프로세스는 필요한 데이터 블록의 수가 여러 개 일지라도 하나씩 데이터 버퍼 캐쉬로 캐싱한다.
(SQL full table scan일 경우 DB_FILE_MULTIBLOCK_READ_COUNT 파라메터에 지정된 블록 수만큼 데이터 버퍼 캐쉬로 한번에 읽게 된다.)
다중 데이터 블록 크기
데이터 블록을 크게 지정하면 많은 데이터를 저장하기 때문에 한번의 데이터 버퍼 캐쉬에 캐싱한 데이터를 재사용할 확률이 높아지게 된다. 단, 동시에 많은 유저가 동일 데이터 블록을 사용할 확률이 높아지므로 데이터 블록에 대한 경합 발생 가능성이 증가한다.
데이터블록을 작게 지정하면 데이터 블록에 저장되는 데이터가 작아 경합 발생 가능성이 감소한다. 단, 더 많은 디스크 I/O를 발생시킬 확률이 높아진다.
다중 데이터 버퍼 캐쉬 설정
기본(Default) : 일반적인 테이블이나 인덱스는 기본 데이터 버퍼 캐쉬를 이용
고정(Keep) : 재사용률이 높은 데이터 블록 저장
재활용(Recycle) : 자주 사용되지 않은 테이블 저장
각각의 데이터 버퍼 캐쉬는 독립된 영역 및 독립된 LRU 리스트를 가진다.
'ORACLE DBMS' 카테고리의 다른 글
083 OCP 시험 문제 (0) | 2025.01.09 |
---|---|
Shared Pool 개념 (0) | 2025.01.07 |
SGA(System Global Area)의 개념 (0) | 2025.01.07 |
082 OCP 시험 문제 (1) | 2024.12.30 |
강남 아이티윌 'DBA 양성 과정' 후기 (0) | 2024.11.26 |