cluster 시스템에서, commit protocol을 async 모드로 처리할지 여부. 
CLUSTER_ASYNC_COMMIT=NO로하면 ASYNC안하겠다. SYNC하겠다. 즉 동기화하겠다는 의미.

  • CLUSTER COMMIT SYNC 모드일 경우
    커밋 한건에 대하여 매번 클러스터간 동기화를 하기때문에 성능저하가 발생할 수 있다.

  • CLUSTER COMMIT ASYNC 모드일 경우
    커밋 1건에 대하여 성능 향상이 있으나, '일시적으로' COMMMIT 1건에 대하여 노드별 일관성이 무너질 수 있다.

SYNC를 보장하는 방법? (내부적 아키텍쳐)
특정 노드에서 GLOBAL TX이 발생하면, GLOBAL COORDINATOR

Q) Master 와 Coordinator Node 는 차이가 뭔가
A)
Coordinator 는 DB 재구동 순서에 따라 달라짐. (즉 마지막으로 Coordinator 역활을 가진 노드가 죽을때만 해당 역할이 다른 노드로 전이됨 )
-- 이 때문에 G1N1 생성하고 G2N1 ,.. 이런식으로 Group을 먼저 생성하고 G1N2 .. HA 노드를 생성하는게 좋음

Master 는 구동순서와는 무관하게 동일 Group에서 Member_ID가 가장 작은 놈이 선택됨

1. Coordinator : Commit / Rollback 에 대해서만 Master 의 역할
2. Master = Update Master : I/U/D 에 대해서만 Master 의 역할

만일 CLUSTER_ASYNC_COMMIT = NO 이라면, SYNC...
Coordinator의 위치 변동은 (COMMIT)성능에 무관함. (누가 coordi여도 어짜피 서로 확인되어야 하니까?)

Master만 성능에 영향줌

각 Cluster Group의 Master Server 선정
Cluster 환경에서 데이타를 변경 수행시 각 cluster group에서 접근 가능한 cluster member 중 member_id 가 가장 작은 하나의 cluster member

각 Cluster Group의 Slave Server 선정
Cluster 환경에서 데이타를 변경 수행시 각 cluster group에서 접근 가능한 cluster member 중 master server를 제외한 나머지 cluster member들

* Coordinator, Master는 각각 global/domain 개념이 있는가?
    * global coordi, global master, domain coordi, domain master 확인



***테스트결론***

CLUSTER_ASYNC_COMMIT은 "하나의 GROUP 내 에서만" 영향있는 애.
그러니까 coordinator와 coordi가 아닌 놈들 간의 sync 여부!!!!
이 프로퍼티가 0일 경우 (async 경우) commit 요청이 gserver queue에 들어가기만 해도 OK 되는것.
이 프로퍼티가 1일 경우 (sync 경우) commit 요청이 각 멤버의 gserver queue에 들어가서 cdispatcher로 dequeue되고, commit 처리까지 완료되었다고 응답 받아야 OK 되는 것.
이 응답이 그룹 간에만 확인이 되는 것이다.


+ Recent posts