개요
1차 테스트에서 rds-mysql 이 탈락하고 아래와 같은 이유로 2차 테스트를 진행함
- transaction 성능은 aurora 가 좋지만 bulk insert 에서 aurora가 gcp 보다 느린 이유는?
- aurora 의 disk 성능이 타 서비스와 비교해서 동등한가? 확인가능 한가?
테스트 내용
sysbench 의 oltp_read_write 시나리오는 dml 이 혼합된 형태인데 위 transaction 이 select 에 포함되어 있는지 등이
불명확하며 wirte 의 구성도 delete1:update:2:insert1 로 되어 있기 때문에 transaction 수치와 bulk-insert 수치를 동등하게 비교할 수 없다.
따라서 insert, update, select, delete 로 시나리오를 구분해서 테스트를 진행한다.
테스트 목록
catpredefined lua file
insert | oltp_insert.lua |
update | oltp_update_index.lua |
select | oltp_read_only.lua |
delete | oltp_delete.lua |
테스트 시나리오
- 클라이언트 1 ~ 128 까지 반복
- prepare
- insert
- update
- select
- delete
- cleanup
테스트 결과
cpu
cpu 사용량은 sql 의 타입에 따라 조금씩 다르지만 client 의 갯수를 기준으로 최대값을 대표값으로 한다.
앞서 결과에서처럼 client 의 갯수가 올라갈 수록 내부에서의 병목으로 cpu 사용에 대한 효율이 낮아 진다고 판단된다.
-18163264128graphrds-auroragcp-mysql
mem
aurora 의 경우 메모리 64기가 중에서 44기가를 innodb_buffer_pool 로 사용하면
테스트를 진행하다보면 free 메모리는 9기가 정도 이며 계속 유지된다. 이결과의 의미는
buffer 에 의해 cache 이 99% 수렴되고 있으며 이를 벗어 나기 위해서는 메모리를 초과하는
대형 테스트가 필요하다.
gcp mysql 의 경우 free 메모리를 확인할 수 없으며 사용된 메모리도 4.7 기가 정도로 유지되었다.
innodb_buffer_pool 의 경우 52기가 중 40기가를 사용한다.
insert
상기 bulk insert 를 병렬처리되는 single row insert (scalar) 가 아닌 multi row insert( relation ) 이므로 아래 테스트와
성격이 다르며, 별도의 결과로 봐야 한다. 소스 확인 결과이며 1차 테스트에서 확인을 하지 못함.
average | 1 | 8 | 16 | 32 | 64 | 128 |
rds-aurora | 2.25 | 4.43 | 5.03 | 5.71 | 6.85 | 8.96 |
gcp-mysql | 4.42 | 10.18 | 12.01 | 12.9 | 33.88 | 25.77 |
99th-tile | 1 | 8 | 16 | 32 | 64 | 128 |
rds-aurora | 3.19 | 8.9 | 7.84 | 14.21 | 21.11 | 29.19 |
gcp-mysql | 6.91 | 22.28 | 29.19 | 27.66 | 55.82 | 45.79 |
update
average | 1 | 8 | 16 | 32 | 64 | 128 |
rds-aurora | 0.25 | 0.39 | 0.51 | 6.48 | 8.35 | 11.14 |
gcp-mysql | 0.11 | 0.14 | 0.17 | 0.37 | 0.53 | 35.67 |
99th-tile | 1 | 8 | 16 | 32 | 64 | 128 |
rds-aurora | 0.58 | 0.95 | 4.33 | 21.89 | 33.12 | 34.33 |
gcp-mysql | 0.28 | 0.26 | 0.43 | 2 | 1.93 | 62.19 |
select
average | 1 | 8 | 16 | 32 | 64 | 128 |
rds-aurora | 2.3 | 3.04 | 3.61 | 7.83 | 14.31 | 26.15 |
gcp-mysql | 1.79 | 2.13 | 2.8 | 3.76 | 7.52 | 33.65 |
99th-tile | 1 | 8 | 16 | 32 | 64 | 128 |
rds-aurora | 2.86 | 4.03 | 4.91 | 20.74 | 46.63 | 63.32 |
gcp-mysql | 2.61 | 3.25 | 4.91 | 6.55 | 14.21 | 44.17 |
delete
average | 1 | 8 | 16 | 32 | 64 | 128 |
rds-aurora | 0.24 | 0.39 | 0.47 | 0.99 | 1.45 | 2.7 |
gcp-mysql | 0.11 | 0.13 | 0.16 | 0.36 | 0.49 | 3.18 |
99th-tile | 1 | 8 | 16 | 32 | 64 | 128 |
rds-aurora | 0.57 | 0.97 | 3.49 | 9.73 | 18.61 | 42.61 |
gcp-mysql | 0.28 | 0.23 | 0.31 | 1.89 | 1.55 | 59.99 |
'Database > MySQL' 카테고리의 다른 글
RDS MySQL 로 Procedure 이관 (0) | 2020.03.25 |
---|---|
binary log file position based replication (0) | 2019.08.23 |
SYSBENCH 를 이용하여 RDS MySQL, RDS Aurora, GCP Cloud SQL MySQL OLTP 테스트 (0) | 2019.07.12 |
keepalived를 이용한 mysql failover (0) | 2019.07.08 |
ProxySQL 을 이용한 read / write split 및 failover 구성 (0) | 2019.07.08 |