1. Coordinator : Commit / Rollback 에 대해서만 Master
  2. Master = Update Master : I/U/D 에 대해서만 Master
  • Coordinator 는 DB 재구동 순서에 따라 변경
  • Master 는 구동순서와는 무관하게 동일 Group에서 Member_ID가 가장 작은 놈이 선택됨
  • 만일 CLUSTER_ASYNC_COMMIT = NO 이라면
    (SYNC)Coordinator의 위치 변동은 성능에 무관함. Master만 성능에 영향줌(누가 coordi여도 어짜피 서로 확인되어야 하니까?)

SELECT
 TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') AS RESULT_SYSDATE,
 COO.MEMBER_ID,
 CLU.MEMBER_NAME,
 COO.IS_GLOBAL_COORD,
 COO.IS_DOMAIN_COORD
FROM
 X$CLUSTER_MEMBER@LOCAL AS COO,
 X$CONTROLFILE_CLUSTER_MEMBER@LOCAL AS CLU
WHERE
 COO.MEMBER_ID = CLU.MEMBER_ID
GROUP BY
 COO.MEMBER_ID, 
 COO.MEMBER_POSITION, 
 CLU.MEMBER_NAME, 
 COO.LOGICAL_CONNECTION, 
 COO.PHYSICAL_CONNECTION, 
 COO.IS_GLOBAL_COORD, 
 COO.IS_DOMAIN_COORD
ORDER BY
 CLU.MEMBER_NAME;

2by2, CLUSTER_ASYNC_COMMIT=NO, hash table
G2N1에서 global transaction 발생. 아래 세가지 케이스 성능 비교
A) global coordinator가 G1N1일 때
B) global coordinator가 G2N1일 때

10만건 1회차로 대~충 해봤을때,
  • ASYNC일 때는 A < B. B가 조금 더 성능 좋음 (105%정도)
  • SYNC일 때는 A=B. TPS 수치 거의 동일하게 나옴...

CLUSTER GROUP을 3by2로, 데이터 건수를 좀 더 늘려서 다시 재보자.

3by2. hash table
앞과 동일하게 G2N1에서 global transaction 발생.

>> 성능 동일함....흠....!

GLOBAL COORDINATOR 위치 차이와, DOMAIN COORDINATOR 위치 차이 확인하자.

GLOBAL COORDINATOR 위치에 따른 성능 차이
  • G3N1에서 GLOBAL TX 발생
  • hash sharding at cluster wide, 100만건, acct_balance, threads 4, commit interval 100
    • G1N1이 GLOBAL COORDINATOR 일 때
    • G1N2이 GLOBAL COORDINATOR 일 때
    • G1N3이 GLOBAL COORDINATOR 일 때

G1N1_global_coordinator
시험항목 async sync 비동기 대비 동기 
INSERT (TPS) 21,825 21,297 97.6% 
UPDATE (TPS) 24,472 24,556 100.3% 
SELECT (TPS) 55,210 58,872 106.6% 
DELETE (TPS) 22,299 22,595 101.3% 

G2N1 global coordinator
시험항목 async sync 비동기 대비 동기 
INSERT (TPS) 21,171 20,646 97.5% 
UPDATE (TPS) 24,218 24,575 101.5% 
SELECT (TPS) 58,875 58,911 100.1% 
DELETE (TPS) 22,508 22,533 100.1% 

G3N1 global coordinator
시험항목 async sync 비동기 대비 동기 
INSERT (TPS) 21,422 21,096 98.5% 
UPDATE (TPS) 24,374 24,540 100.7% 
SELECT (TPS) 56,869 59,503 104.6% 
DELETE (TPS) 22,454 20,435 91.0% 



DOMAIN COORDINATOR 위치에 따른 성능 차이
  • G1N1에서 DOMAIN TX 발생
  • G1N1 MASTER, hash sharding at only G1, 100만건, acct_balance, threads 4, commit interval 1
    • G1N1이 GLOBAL COORDINATOR이자 DOMAIN COORDINATOR 일 때
    • G1N2이 GLOBAL COORDINATOR이자 DOMAIN COORDINATOR 일 때
    • G1N1이 DOMAIN COORDINATOR 일 때
    • G1N2이 DOMAIN COORDINATOR 일 때

G1N1_global/domain_coordinator
시험항목 async sync 비동기 대비 동기 
INSERT (TPS) 23,385 20853 89.2% 
UPDATE (TPS) 31,542 27657 87.7% 
SELECT (TPS) 130,210 132762 102.0% 
DELETE (TPS) 25,510 22200 87.0% 

G1N2 global/domain coordinator
시험항목 async sync 비동기 대비 동기 
INSERT (TPS) 22,554 20,020 88.8% 
UPDATE (TPS) 30,253 26,818 88.6% 
SELECT (TPS) 131,460 130,576 99.3% 
DELETE (TPS) 24,651 21,738 88.2% 

G1N1 domain coordinator
시험항목 async sync 비동기 대비 동기 
INSERT (TPS) 23,438 20,572 87.8% 
UPDATE (TPS) 32,267 26,673 82.7% 
SELECT (TPS) 128,596 130,772 101.7% 
DELETE (TPS) 24,857 22,027 88.6% 

G1N2 domain coordinator
시험항목 async sync 비동기 대비 동기 
INSERT (TPS) 23,227 20,625 88.8% 
UPDATE (TPS) 31,325 27,007 86.2% 
SELECT (TPS) 130,103 128,387 98.7% 
DELETE (TPS) 24,565 22,008 89.6% 


결론. 차이 없다. 그동안 잘못알고있었다.. 고민은 각자.

CLUSTER_ASYNC_COMMIT...
master와 slave간의 동기/비동기라고..? by son
domain coordi와 아닌놈들간의 동기 여부?

1. domain TX 발생 시 async, sync 차이가 있고 / global TX 발생 시 async , sync 차이가 없는 이유
2. domain TX 발생 시 domain coordinator 위치에 관계없이 성능이 동일한 이유
3. global TX 발생 시 global coordinator 위치에 관계없이 성능이 동일한 이유

아래 페이지에서 계속 진행


'IT Engineer > Database' 카테고리의 다른 글

SHARED_SESSION, gserver, balancer, gdispatcher  (0) 2019.02.15
alloc에 대한 내용  (0) 2019.02.14
coordinator 위치에 따른 성능테스트 결과메모  (0) 2019.02.13
database cluster 개념  (1) 2019.02.13
Shared Nothing Disk  (0) 2019.02.13

+ Recent posts