h2.Resource Affinity(리소스친화도)
RAC는 자원이 공유도므로 동시성 문제가 증폭됨
가령 한 노드에서 10개의 세션이 자원을 다투는 것과, 두 노드에서 5개의 세션씩 총 10개의 세션이 같은 자원을 다투는 경우,
참여하는 유저 세션의 수는 동일하지만, RAC의 경우 자원 공유를 위한 더욱 복잡한 알고리즘과 코드 레이어를 거치게 됨
그 예로, 버퍼캐시를 공유하기 위해서 노드 간에 끊임없는 블록교환과 메시지 교환을 통한 동기화가 이루어져야 함
인스턴스 간의 블로킹을 구현하기 위해 노드 간에 끊임없이 락 정보를 교환해야 함
인스턴스 간의 과도한 동기화는 필연적으로 인스턴스간 경합을 유발하게 되며, RAC시스템의 성능을 저하시키는 주범임
인스턴스간 경합 문제를 최소화 하기 위해서는 특정 인스턴스가 특정자원을 "독점"할 수 있는 방법이 필요하지만,
RAC에서는 자원이 공유되어야 하기 때문에 실제로 특정 인스턴스가 "독점"하는 것은 불가능함
따라서, 자원을 "공유"하면서도 필요한 경우에만 "독점"할 수 있는 기법이 필요하며 이를 인스턴스 친화도(Instance Affinity)라고 함
h2.Resouce Affinity의 적용사례