개요
RDS Aurora vs RDS MySQL vs Cloud SQL MySQL 를 sysbench 를 이용하여 성능을 측정한다.
hardware 는 8core ram 64GB spec 으로 별도의 client 를 통해 ( 각 cloud vm instance ) 테스트하였다.
client 는 sysbench 의 옵션을 이용하여 1, 8, 16, 32, 64, 128 까지 늘려가며 수행했으며
테스트 시나리오는 sysbench 에 정의된 'oltp_read_write.lua' 와 'bulk_insert.lua' 를 사용했다.
oltp_read_write test script
f [ "$#" -ne 4 ];
then
echo "Usage : sysbench.sh <thread_cnt> <row_cnt> <table_cnt> <op_type(prepare,run,cleanup)>"
exit 255
fi
HOST=10.92.0.3
PORT=3306
USER=test
PASS=test
DB=test
WARM_SEC=5
THREAD_CNT=$1
ROW_CNT=$2
TABLE_CNT=$3
OP_TYPE=$4
RUN_TIME=120
LUA_PATH=/home/cloud_softwiz/workspace/sysbench/share/sysbench
CMD="
sysbench \
--time=$RUN_TIME \
--percentile=99 \
--histogram \
--mysql-host=$HOST \
--mysql-port=$PORT \
--mysql-user=$USER \
--mysql-password=$PASS \
--mysql-db=$DB \
--warmup-time=$WARM_SEC \
--threads=$THREAD_CNT \
--table-size=$ROW_CNT \
--tables=$TABLE_CNT \
$LUA_PATH/oltp_read_write.lua \
$OP_TYPE"
echo -e $CMD
sysbench \
--time=$RUN_TIME \
--percentile=99 \
--histogram \
--mysql-host=$HOST \
--mysql-port=$PORT \
--mysql-user=$USER \
--mysql-password=$PASS \
--mysql-db=$DB \
--warmup-time=$WARM_SEC \
--threads=$THREAD_CNT \
--table-size=$ROW_CNT \
--tables=$TABLE_CNT \
$LUA_PATH/oltp_read_write.lua \
$OP_TYPE
bulk insert test script
f [ "$#" -ne 2 ];
then
echo "Usage : sysbulk.sh <thread_cnt> <op_type(prepare,run,cleanup)>"
exit 255
fi
HOST=10.92.0.3
PORT=3306
USER=test
PASS=test
DB=test
WARM_SEC=10
THREAD_CNT=$1
OP_TYPE=$2
CMD="
sysbench \
bulk_insert \
--time=120 \
--percentile=99 \
--histogram \
--mysql-host=$HOST \
--mysql-port=$PORT \
--mysql-user=$USER \
--mysql-password=$PASS \
--mysql-db=$DB \
--warmup-time=$WARM_SEC \
--threads=$THREAD_CNT \
bulk_insert
$OP_TYPE"
echo -e $CMD
sysbench \
bulk_insert \
--time=120 \
--percentile=99 \
--histogram \
--mysql-host=$HOST \
--mysql-port=$PORT \
--mysql-user=$USER \
--mysql-password=$PASS \
--mysql-db=$DB \
--warmup-time=$WARM_SEC \
--threads=$THREAD_CNT \
$OP_TYPE
성능
oltp average
1 | 8 | 16 | 32 | 64 | 128 | |
rds-mysql | 21.34 | 40.14 | 79.48 | 150.58 | 202.04 | 331.53 |
rds-aurora | 13.27 | 16.54 | 19.12 | 25.02 | 40.65 | 72.33 |
gcp-mysql | 12.59 | 17.06 | 30.17 | 54.04 | 90.89 | 120.77 |
oltp 99th pecentile
1 | 8 | 16 | 32 | 64 | 128 | |
rds-mysql | 54.83 | 404.61 | 1280.93 | 1903.57 | 2728.81 | 4437.27 |
rds-aurora | 18.95 | 29.19 | 32.53 | 39.65 | 59.99 | 108.68 |
gcp-mysql | 21.5 | 38.25 | 108.68 | 204.11 | 282.25 | 363.18 |
oltp transaction
1 | 8 | 16 | 32 | 64 | 128 | |
rds-mysql | 46 | 199 | 201 | 210 | 312 | 386 |
rds-aurora | 75 | 483 | 836 | 1279 | 1574 | 1769 |
gcp-mysql | 79 | 468 | 530 | 591 | 704 | 1060 |
bulk insert
1 | 8 | 16 | 32 | 64 | 128 | |
rds-mysql | 0.01 | 0.03 | 0.07 | 0.15 | 04 | 1.14 |
rds-aurora | 0.01 | 0.04 | 0.07 | 0.16 | 0.44 | 1.25 |
gcp-mysql | 0. | 0.02 | 0.04 | 0.09 | 0.19 | 0.39 |
'Database > MySQL' 카테고리의 다른 글
binary log file position based replication (0) | 2019.08.23 |
---|---|
SYSBENCH 를 이용하여 RDS MySQL, RDS Aurora, GCP Cloud SQL MySQL OLTP 테스트 2차 (0) | 2019.07.12 |
keepalived를 이용한 mysql failover (0) | 2019.07.08 |
ProxySQL 을 이용한 read / write split 및 failover 구성 (0) | 2019.07.08 |
NDB DataNode Directory Files (0) | 2019.07.08 |