polarDB和DRDS压力测试 博客分类: 数据库
测试工具:
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.csdn.net/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"`