- Coordinator : Commit / Rollback 에 대해서만 Master
- 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 |