-
Oracle에는 DB Buffer Cache가 있다.
Buffer Cache는 SQL 수행을 위해 필요한 Data Block을 Memory로 올려 저장하는 곳이다.

RAC(Real Application Clusters)란 ?
여러 서버가 하나의 DB를 동시에 붙잡고 쓰는 구조

Cache Fusion은 서로 다른 Instance의 DB Buffer Cache에서 Block을 이동시키면서 발생한다. Cache Fusion은 블록 핑퐁이 발생 할 수 있어 UPDATE 사용 에는 위험. SELECT는 괜찮다. (* 블록 핑퐁: 같은 블록을 계속 뺏고 뺏김)
Cache Fusion의 등장 배경은 ?
- 노드마다 DB Cache를 따로 씀
- 다른 노드가 가진 Block이 필요해지면 디스크에 w/r 해서 얻어야했음
그 결과, I/O 발생과 확장성이 좋지 못함. 디스크를 거치지 말자! -> Cache Fusion 등장
- 메모리 <> 메모리 직접 전송
- 어떻게? 인터커넥트 사용
- 디스크는 최후 수단
Cache Fusion의 발생 흐름

① Node 1에서 SQL 실행: 필요한 데이터 블록이 로컬 DB Cache에 없음
② Global Cache(GCS)에 블록 위치 문의: Node 1이 Global Cache Service에 질의
③ Node 2가 블록 소유 중: GCS 판단 결과 👉 해당 블록은 Node 2 DB Cache에 (메모리에 있음 )
④ Cache Fusion 발생 (핵심) 인터커넥트 통해 메모리 블록 직접 전송
⑤ 블록 상태 / 소유권 조정
- 읽기 요청 → CR 블록
- 쓰기 요청 → Current 블록
- GCS/GES(Global Enqueu Service:RAC LOCK 담당)가 글로벌 락 & 소유권 재조정
⑥ Node 1 DB Cache 적재 후 SQL 계속: 전달받은 블록을 Node 1 DB Cache에 적재
Cache Fusion 구성요소
1. GCS (Global Cache Service)
- 데이터 블록 관리자
- CR / Current 블록 판별
- 블록 이동 트리거
2. GES (Global Enqueue Service)
- 락 관리자
- TX / TM / DDL / Dictionary 락
3. 인터커넥트 (Interconnect)
- 노드 간 초고속 전용 네트워크
- Cache Fusion 블록 전송 통로
- 보통 InfiniBand / 10~25GbE
4. DB Cache (각 인스턴스)
- 실제 데이터 블록이 존재하는 곳
- 블록은 디스크보다 먼저 여기서 이동
5. Global Resource Directory (GRD)
- 블록 소유권 메타정보
- 어떤 노드가 어떤 상태로 갖는지 기록
6. CR / Current 블록 메커니즘
- CR: 읽기 전용 일관성 블록
- Current: 쓰기 가능한 최신 블록
RAC의 튜닝요소: GC 대기 이벤트 줄이기
- gc cr block busy: 읽기(cr) 요청 했는데 상대 노드가 바쁘거나 못 줌
- gc buffer busy: 쓰기(current) 요청 했는데 블록 소유권 이동 중 충돌
- gc current grant busy: UPDATE/DELETE 경합
'✎ 2025년' 카테고리의 다른 글
LangChain - LCEL (0) 2025.12.24 LangChain 기본 알아보기 (0) 2025.12.24 PQ와 QC (4) 2025.06.27 CDC(Change Data Capture) (0) 2025.04.05 프로젝트 성패를 결정짓는 데이터 모델링 이야기 (3) 2025.03.03