h2.Resource Affinity(리소스친화도)

  • 특정 Instance가 특정 Resource를 가능한 독점적으로 사용하는 것을 의미
  • Resource Affinity가 높으면 Instance간 경합이 줄어드는 효과
    • RAC Instance 튜닝은 Resource Affinity를 높이는 것이 목적


RAC는 자원이 공유도므로 동시성 문제가 증폭됨

가령 한 노드에서 10개의 세션이 자원을 다투는 것과, 두 노드에서 5개의 세션씩 총 10개의 세션이 같은 자원을 다투는 경우,
참여하는 유저 세션의 수는 동일하지만, RAC의 경우 자원 공유를 위한 더욱 복잡한 알고리즘과 코드 레이어를 거치게 됨

그 예로, 버퍼캐시를 공유하기 위해서 노드 간에 끊임없는 블록교환과 메시지 교환을 통한 동기화가 이루어져야 함
인스턴스 간의 블로킹을 구현하기 위해 노드 간에 끊임없이 락 정보를 교환해야 함

인스턴스 간의 과도한 동기화는 필연적으로 인스턴스간 경합을 유발하게 되며, RAC시스템의 성능을 저하시키는 주범임

인스턴스간 경합 문제를 최소화 하기 위해서는 특정 인스턴스가 특정자원을 "독점"할 수 있는 방법이 필요하지만,
RAC에서는 자원이 공유되어야 하기 때문에 실제로 특정 인스턴스가 "독점"하는 것은 불가능함

따라서, 자원을 "공유"하면서도 필요한 경우에만 "독점"할 수 있는 기법이 필요하며 이를 인스턴스 친화도(Instance Affinity)라고 함

h2.Resouce Affinity의 적용사례

  • FLM vs ASSM
  • Sequence Cache 크기
  • Dynamic Resource Remastering
  • 리버스 인덱스
  • 세그먼트 파티셔닝
  • 병렬실행(Parallel Execution)
  • 스케쥴 작업
  • 전역 임시 테이블
  • 읽기 전용 테이블 스페이스
  • 어플리케이션 파티셔닝

문서에 대하여