DRM(Dynamic Resource Mastering)

장수윤·2025년 1월 15일

Oracle RAC를 운영하다 보면, 데이터베이스 성능 최적화를 위해 다양한 기능과 설정을 검토하게 됩니다. 그중 하나가 바로 DRM(Dynamic Resource Mastering)입니다.

DRM이란 무엇인가요?

DRM은 Oracle RAC 환경에서 데이터 블록의 리소스 마스터링을 동적으로 관리하는 기능입니다. 기본적으로 RAC는 여러 노드에서 공유 디스크에 접근하기 때문에, 특정 데이터 블록에 대한 액세스를 조율하기 위한 "리소스 마스터"를 지정합니다. 이 마스터는 특정 노드에서 관리하며, 다른 노드가 해당 블록에 액세스하려면 마스터 노드와 통신해야 합니다.

DRM은 데이터 액세스 패턴에 따라 마스터 노드를 동적으로 변경하여, 블록 액세스의 효율성을 극대화합니다. 예를 들어, 특정 데이터 블록이 주로 한 노드에서만 사용된다면, 해당 블록의 마스터를 그 노드로 리마스터링하여 통신 오버헤드를 줄이는 것입니다.

DRM 활성화의 장단점

  • 성능 향상: 블록 액세스와 관련된 네트워크 트래픽을 줄일 수 있습니다.
  • 자원 사용 최적화: 노드 간의 불필요한 동기화를 최소화하여 자원을 효율적으로 사용할 수 있습니다.

하지만 활성화에는 몇 가지 주의할 점도 있습니다:

  • 리마스터링(Remastering): DRM은 데이터 블록의 사용 패턴을 분석하고, 필요할 경우 블록의 마스터를 특정 노드에 다시 할당하는 과정.
    이 과정에서 추가적인 작업이 발생하며, 시스템의 부하를 일시적으로 증가시킬 수 있습니다.

    1000번 이상 다른 쪽 노드에서 Writing이 발생하면 Mastering 정보를 옮기는 Remastering이 발생하는데
    이때 모든 gc request 가 중단되기 때문에 느려지는 현상이 발생한다고 합니다.

  • 프리징(Freezing): 리마스터링이 발생하면, 해당 블록에 대한 액세스가 잠시 중단됩니다. 이를 "프리징"이라고 부르며, 이는 사용자가 느낄 정도로 성능에 영향을 미칠 수도 있습니다. 프리징이 자주 발생하면 오히려 성능 저하로 이어질 수 있습니다.

DRM은 언제 유용할까요?

DRM은 노드 간 데이터 액세스 패턴이 명확하게 구분될 때 가장 유용합니다. 예를 들어, 노드 A가 주로 특정 테이블의 데이터를 처리하고, 노드 B가 다른 테이블을 주로 처리하는 경우입니다. 하지만 데이터 액세스 패턴이 불규칙하거나, 노드 간 데이터 공유가 빈번하다면, DRM 활성화가 오히려 성능을 악화시킬 가능성이 있습니다.

DRM 설정 확인과 조정

DRM 활성화 상태를 확인하거나 조정하려면 다음과 같은 명령어를 사용할 수 있습니다:

  • DRM 활성화 상태 확인:
    value가 0이면 DRM 꺼져있는 상태
show parameter "_gc_policy_time";

name                  type            value
-------------------------------------------------
_gc_policy_time        integer         0
  • DRM 활성화:
-- spfile에서 변경 후 재기동
alter system set “_gc_undo_affinity”=FALSE scope=spfile sid=*;
alter system set “_gc_policy_time”=0 scope=spfile sid=*;
profile
oracle db

0개의 댓글