AWS RDS Storage 성능 비교

Kimmatt
직방 기술 블로그

--

AWS 서비스에 사용할 Storage에 대한 자료를 찾아보다가
AWS 공식 자료가 없어 테스트 방식과 내용을 고민하게 되었습니다.
RDS사용하는 다른분들에게도 도움이 될 것 같아 작성을 하게 되었습니다^^일반적으로 SysBenchMark와 RDS에서 사용하는 Backup & Recovery
를 테스트하면 현실적으로 참고할 수 있다고 생각했습니다.

2023년 상반기에 도입된 GP3에 대한 성능 비교를
[GP3] vs [Aurora] vs [Provisioned] 대상으로 진행했습니다.

DB서버 제원은 너무 사양이 좋으면 수치 변동이 없을 것 같아 DB 수치가 변경이 일어나기 쉬운 저사양의 DB서버를 선택을 했습니다.
테스트는 Storage 테스트라서 DB서버의 영향도를 기록하기엔 좋은 사양의 서버가 필요없다고 판단 했습니다.

차례
1 DB서버 환경
2 SnapShot Recovery 테스트 및 결과
3 SnapShot Backup 테스트 및 결과
4 SysBenchMark 테스트의 내용 설명
5 SysBench Result 결과

1. 환경

DB서버 제원 : db.t3.medium (2 VCPU 4GB)
DB size :100GB
RDS Mysql Version: 5.7.38
RDS Aurora Version: 2.10.2 (5.7.12)

2. SnapShot Recovery 테스트

Result(결과)
[GP3] : 3분소요 February 20, 2023, 16:02 ~ 05 [100GB, 3000 IOPS ]
[Provisioned] : 3분소요 February 20, 2023, 16:24 ~ 27 [100GB, 3000 IOPS ]

— — — — — — — — — — — — — — — — — — — — — — — — — — — —
[Aurora]: 5~11분소요 February 20, 2023, 15:40 ~45 [aurora 공개자료 없음]

3. SnapShot Backup

Result(결과)
[GP3] : 2분 소요 February 21, 2023, 12:22 ~24 [100GB, 3000 IOPS ]
[Provisioned]: 3분 소요 February 21, 2023, 13:03 ~ 06 [100GB, 3000 IOPS ]

— — — — — — — — — — — — — — — — — — — — — — — — — — — —

[Aurora]: 4분 소요 February 21, 2023, 12:36 ~ 40 [aurora 공개자료 없음]

4. SysBenchMark 구성 (DB size : 2,257.2 MB)

설치 매뉴얼 : 참고 링크 , AWS 링크

#테스트 데이터 설치:#sudo apt-get install sysbench
#테스트 데이터 삭제:#sudo apt-get autoremove sysbench

#DB설정
mysql> create database sysbench;
mysql> create user ‘sysbench_user’@’%’ identified by ‘12345’;
mysql> grant all privileges on sysbench.* to sysbench_user@’%’;

#테스트용 데이터 입력 (1,000,000 건x 10테이블 = 10,000,000건)

sysbench - db-driver=mysql - mysql-host=endpoint  - mysql-user=sysbench_user - mysql-password=12345 - mysql-db=sysbench - table-size=1000000 - tables=10 /usr/share/sysbench/oltp_read_only.lua prepare

#DB사이즈 쿼리

SELECT table_schema "DB Name",
ROUND(SUM(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB"
FROM information_schema.tables
where table_schema = 'sysbench'
GROUP BY table_schema;

#select 테스트용 source

sysbench - db-driver=mysql - mysql-host=endpoint - max-requests=100000 - time=120 - mysql-user=sysbench_user - mysql-password=12345 - mysql-db=sysbench - table-size=1000000 - tables=10 - threads=85 - report-interval=10 /usr/share/sysbench/oltp_read_only.lua run

#select & index update, delete & insert 테스트용 source

sysbench - db-driver=mysql - mysql-host=endpoint - max-requests=100000 - time=120 - mysql-user=sysbench_user - mysql-password=12345 - mysql-db=sysbench - table-size=1000000 - tables=10 - delete_inserts=100 - index_updates=100 - non_index_updates=100 - threads=85 - report-interval=10 /usr/share/sysbench/oltp_read_write.lua run

#테스트용 source 데이터 삭제

sysbench - db-driver=mysql - mysql-host=endpoint  - mysql-user=sysbench_user - mysql-password=12345 - mysql-db=sysbench - table-size=1000000 - tables=10 /usr/share/sysbench/oltp_read_only.lua cleanup

5. SysBench Result

5–1 insert : 10,000,000건 입력
[GP3]:소요시간 25분

[Aurora] :소요시간 15분

[Provisioned] : 소요시간 11분

5–2 select & update & delete & insert

[GP3]: (thread 85 input시간 120초) : 소요시간 6분

[Aurora] : (thread 85 수행시간 120초) : 소요시간 7분

[Provisioned]: (thread 85 수행시간 120초) : 소요시간 6분

Result Report (결과)
특이사항
동시 작업 thread : 85개는 Aurora db.t3.medium최대 동시접속 90제한이고
다른 RDS들은 이보다 상향된 값을 가지고 있음. (Aurora 90초과시 Error발생)
동일 환경상에서 테스트를 해야 비교할수 있어 다른 RDS들도
동시작업 수를 thread 85로 맞추어서 테스트를 진행하였습니다.

캐싱 시스템을 사용하지 않는 DB Storage 기반으로 테스트한 정리 내역이며
시스템별 IOPS 관련 내역은 다음의 참조 link를 열람하시면 됩니다.

--

--