测试工具:
Sysbench
测试对象:
阿里云DRDS(8核16G)和PolarDB(2核4G)
测试方法:
Sysbench脚本压力测试。
数据规模为10个表,每个表1000万行数据。
数据:
256线程1小时压测
|
|
DRDS |
PolarDB | ||
|
CPU |
1c |
12c |
1c-公网 |
12c-公网 |
|
时长(秒) |
3600 |
3600 |
3600 |
3600 |
|
读次数 |
17697400 |
17520090 |
4996670 |
5362448 |
|
写次数 |
5056400 |
5005740 |
1427620 |
1532128 |
|
其他次数 |
2528200 |
2502870 |
713810 |
766064 |
|
总次数 |
25282000 |
25028700 |
7138100 |
7660640 |
|
事务数 |
1264100 |
1251435 |
356905 |
383032 |
|
TPS |
351.07 |
347.57 |
99.09 |
106.34 |
|
最大延迟(毫秒) |
1889.96 |
1898.58 |
19711.29 |
12999.64 |
|
最小延迟 |
251.02 |
204.39 |
759.54 |
678.3 |
|
平均延迟 |
729.12 |
736.51 |
2582.79 |
2406.57 |
|
95%百分比取值 |
943.16 |
960.30 |
3773.42 |
3386.99 |
|
|
|
|
|
|
256线程2小时压测
|
|
DRDS |
PolarDB | ||
|
CPU |
1c |
12c |
1c-公网 |
12c-公网 |
|
时长(秒) |
7200 |
7200 |
7200 |
7200 |
|
读次数 |
34661564 |
35602952 |
9333590 |
10897208 |
|
写次数 |
9903304 |
10172272 |
2666740 |
3113488 |
|
其他次数 |
4951652 |
5086136 |
1333370 |
1556744 |
|
总次数 |
49516520 |
50861360 |
13333700 |
15567440 |
|
事务数 |
2475826 |
2543068 |
666685 |
778372 |
|
343.84 |
353.18 |
92.57 |
108.08 | |
|
最大延迟 |
5311.81 |
2217.48 |
33797.58 |
13401.63 |
|
最小延迟 |
119.50 |
238.49 |
698.30 |
811.58 |
|
平均延迟 |
744.51 |
724.83 |
2765.13 |
2368.29 |
|
95%百分比取值 |
960.30 |
943.16 |
4128.91 |
3326.55 |
|
|
|
|
|
|

考虑到网络环境的延迟,修改网络环境同为华北2后进行压测:
256线程1小时压测
|
|
DRDS |
PolarDB | ||
|
CPU |
1c |
12c |
12c-公网 |
12c-内网 |
|
时长(秒) |
3600 |
3600 |
3600 |
3600 |
|
读次数 |
17697400 |
17520090 |
5362448 |
11726722 |
|
写次数 |
5056400 |
5005740 |
1532128 |
3350492 |
|
其他次数 |
2528200 |
2502870 |
766064 |
1675246 |
|
总次数 |
25282000 |
25028700 |
7660640 |
16752460 |
|
事务数 |
1264100 |
1251435 |
383032 |
837623 |
|
TPS |
351.07 |
347.57 |
106.34 |
232.61 |
|
最大延迟(毫秒) |
1889.96 |
1898.58 |
12999.64 |
28001.15 |
|
最小延迟 |
251.02 |
204.39 |
678.3 |
24.33 |
|
平均延迟 |
729.12 |
736.51 |
2406.57 |
1100.39 |
|
95%百分比取值 |
943.16 |
960.30 |
3386.99 |
3095.38 |
|
|
|
|
|
|
256线程2小时压测
|
|
DRDS |
PolarDB | ||
|
CPU |
1c |
12c |
12c-公网 |
12c-内网 |
|
时长(秒) |
7200 |
7200 |
7200 |
7200 |
|
读次数 |
34661564 |
35602952 |
10897208 |
24875368 |
|
写次数 |
9903304 |
10172272 |
3113488 |
7107248 |
|
其他次数 |
4951652 |
5086136 |
1556744 |
3553624 |
|
总次数 |
49516520 |
50861360 |
15567440 |
35536240 |
|
事务数 |
2475826 |
2543068 |
778372 |
1776812 |
|
TPS |
343.84 |
353.18 |
108.08 |
246.75 |
|
最大延迟 |
5311.81 |
2217.48 |
13401.63 |
17399.29 |
|
最小延迟 |
119.50 |
238.49 |
811.58 |
23.46 |
|
平均延迟 |
744.51 |
724.83 |
2368.29 |
1037.43 |
|
95%百分比取值 |
960.30 |
943.16 |
3326.55 |
2985.89 |
|
|
|
|
|
|

结论:
数据显示两个实例的DRDS的效果优于一主一从polarDB。通过内网访问可以大幅度提高polarDB的表现,但是在多项观测值上表现仍然不及DRDS。
不足
- 没有观测CPU性能。
- 没有考虑join操作。
- 实验样本较少。
- 没有考虑低数据量下的表现。
- 配置上DRDS优于PolarDB。
参考:
https://yq.aliyun.com/articles/27835?spm=5176.10695662.1996646101.searchclickresult.570016a36w3zBS
https://blog.youkuaiyun.com/oahz4699092zhao/article/details/53332105
脚本:
#/bin/sh
#/usr/share/sysbench/tests/include/oltp_legacy/oltp.lua
path=/opt/dev/sysbench
post_fix=`date +"%Y%m%d%H%M"`
threads=256
core=12c
total_time=120
db=polardb
db_host=polardb.rds.aliyuncs.com
db_port=3306
db_usr=sbtest
db_password=password
tb_size=10000000
log_name=${path}/log/sysbench_${core}_${db}_${threads}_${total_time}_${post_fix}.log
echo ${log_name} START `date +"%Y-%m-%d %H:%M:%S"`
#prepare
#sysbench /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua --db-driver=mysql --mysql-host=${db_host} --mysql-port=${db_port} --mysql-user=${db_usr} --mysql-password=${db_password} --oltp-test-mode=complex --oltp-tables-count=10 --oltp-table-size=${tb_size} --threads=${threads} --time=120 --report-interval=10 prepare
#process
sysbench /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua --db-driver=mysql --mysql-host=${db_host} --mysql-port=${db_port} --mysql-user=${db_usr} --mysql-password=${db_password} --oltp-test-mode=complex --oltp-tables-count=10 --oltp-table-size=${tb_size} --threads=${threads} --time=${total_time} --report-interval=60 run > ${log_name}
#cleanup
#sysbench /usr/share/sysbench/tests/include/oltp_legacy/oltp.lua --db-driver=mysql --mysql-host=${db_host} --mysql-port=${db_port} --mysql-user=${db_usr} --mysql-password=${db_password} --oltp-tables-count=10 cleanup
echo ${log_name} END `date +"%Y-%m-%d %H:%M:%S"`
通过对阿里云DRDS和PolarDB进行Sysbench压力测试,比较了两者在一小时和两小时不同线程下的性能指标,结果显示DRDS在多数情况下表现更优。
1458

被折叠的 条评论
为什么被折叠?



