gc current request vs gc cr request

·2024년 12월 6일

oracle에서 세션 모니터링을 하다보면 gc current request와 gc cr request가 다분하게 발생한다.

두 이벤트 모두 oracle RAC 환경에서 발생하는 이벤트로 GLOBAL CACHE에서 블록 요청과 관련된 대기 이벤트이다. RAC 노드 간 데이터 블록을 공유하는 방석의 차이에 따라 발생한다.

  • GLOBAL CACHE란?
    RAC 환경에서 여러 인스턴스가 동일한 데이터베이스를 공유하지만, 각 인스턴스는 자체적인 버퍼 캐시를 가진다. GLOBAL CACHE는 노드간 데이터 블록의 일관성을 유지하기 위해 사용되며, 데이터 블록은 특정 노드의 SGA(buffer cache)에서 관리된다.

1. gc current request

rac의 한 노드에서 데이터를 수정하려고 할 때 필요한 블록이 로컬 캐시에 없는 경우
요청된 블록이 현재 상태 (current)로 필요함.
만약 블록이 변경 중이라면 redo 데이터를 적용하여 최신 상태로 만듦.
블록을 current 상태로 전달받아야 하기 때문에 지연 시간이 클 수 있음.
-> 빈번한 DML 작업이 발생하거나, 노드 간 네트워크 성능 낮으면 성능 문제 발생 할 수 있음.

2. gc cr request (global cache consistent read request)

rac의 한 노드에서 읽기(쿼리)를 수행하는데 필요한 데이터 블록이 로컬 캐시에 없고, 다른 노드의 캐시에 블록이 존재하는 경우
요청된 블록이 변경되지 않은 상태로, 일관된 읽기를 위해 필요한 경우
데이터 변경 가능성은 없고, 읽기 작업만 수행 -> 지연시간 적음
undo 데이터를 적용하여 요청 시점의 일관된 상태를 유지

profile
금융권 DBA (ORACLE)

0개의 댓글