0
0
0
1
专栏/.../

aws上采用tidb和原生使用aws rds价格的比较。兼数据分析性能的测试

 tidb狂热爱好者  发表于  2023-07-04

项目背景介绍

有一个20t-30t的历史库需要做数据分析,节能减排,减容增效。今年大环境不好,aws的费用又是出奇的贵。

历史库的作用是公司近1年的订单合集,平时不需要查询,偶尔会有月统计的需求。之前用aws的mysql无法完成需求,现在寻找数据库替换。

分别测试了oltp性能和olap性能。

数据分析pk

压测步骤

如何对 TiDB 进行 CH-benCHmark 测试

本地启动一个tidb单节点端口4000,启动一个mysql8.0 端口4001

tiup playground

初始化测试数据

tiup bench tpch --sf=1 prepare -P4000

tiup bench tpch --sf=1 prepare -P4001

#进入tidb开启tiflash。 ALTER DATABASE tpcc SET TIFLASH REPLICA 1; #等待同步完成后收集统计信息。 analyze table customer; analyze table district; analyze table history; analyze table item; analyze table new_order; analyze table order_line; analyze table orders; analyze table stock; analyze table warehouse; analyze table nation; analyze table region; analyze table supplier;

 

分别开始测试

tiup bench tpch --sf=1 run -P4000

tiup bench tpch --sf=1 run -P4001

 

mysql8数据分析测试

tiup is checking updates for component bench ...timeout(2s)! Starting component bench: /var/root/.tiup/components/bench/v1.12.0/tiup-bench tpch --sf=1 run -P4001 [Current] Q1: 78.89s [Current] Q2: 3.79s [Current] Q3: 26.81s [Current] Q4: 6.14s [Current] Q5: 6.48s [Current] Q6: 10.23s [Current] Q7: 26.21s [Current] Q8: 39.76s [Current] Q9: 98.75s [Current] Q10: 13.25s [Current] Q11: 10.37s [Current] Q12: 15.94s [Current] Q13: 12.72s [Current] Q14: 32.78s [Current] Q15: 31.24s [Current] Q16: 4.06s mysql无法进行数据分析依赖redshift 无法进行Q17测试。

tidb数据分析

[Current] Q3: 0.30s [Current] Q4: 1.31s [Current] Q5: 0.57s [Current] Q6: 0.17s [Current] Q7: 0.30s [Current] Q8: 0.50s [Current] Q9: 0.97s [Current] Q1: 0.57s [Current] Q10: 0.44s [Current] Q11: 0.17s [Current] Q12: 0.44s [Current] Q13: 0.70s [Current] Q14: 0.17s [Current] Q15: 0.50s [Current] Q16: 0.23s [Current] Q17: 0.44s [Current] Q18: 0.84s [Current] Q2: 0.17s [Current] Q21: 0.84s [Current] Q22: 0.10s [Current] Q3: 0.30s [Current] Q4: 1.38s [Current] Q5: 0.44s [Current] Q6: 0.17s [Current] Q7: 0.37s [Current] Q8: 0.50s [Current] Q9: 0.91s [Current] Q1: 0.57s [Current] Q10: 0.44s [Current] Q11: 0.17s [Current] Q12: 0.30s [Current] Q13: 0.57s [Current] Q14: 0.17s [Current] Q15: 0.64s [Current] Q16: 0.23s [Current] Q17: 0.50s [Current] Q19: 0.64s [Current] Q2: 0.17s [Current] Q20: 0.23s [Current] Q21: 0.91s [Current] Q22: 0.10s [Current] Q3: 0.37s [Current] Q4: 1.17s [Current] Q5: 0.44s [Current] Q6: 0.17s [Current] Q7: 0.37s [Current] Q8: 0.50s [Current] Q9: 0.84s [Current] Q1: 0.64s [Current] Q10: 0.44s [Current] Q11: 0.17s [Current] Q12: 0.23s [Current] Q13: 0.57s [Current] Q14: 0.10s [Current] Q15: 0.37s [Current] Q16: 0.17s [Current] Q17: 0.30s [Current] Q18: 0.67s [Current] Q19: 0.64s [Current] Q2: 0.17s [Current] Q20: 0.30s [Current] Q21: 0.77s [Current] Q22: 0.10s [Current] Q3: 0.30s [Current] Q4: 1.17s [Current] Q5: 0.44s [Current] Q6: 0.10s [Current] Q7: 0.37s [Current] Q8: 0.30s [Current] Q9: 0.70s tidb数据分析性能是mysql的几百倍 均是几百毫秒完成。

测试结果比较

差距最大的q1 q9 有100多倍,最小q4 也有5倍

 

q1

q2

q3

q4

q5

q6

q7

q8

q9

q10

mysql8

78.89s

3.79s

26.81s

6.14s

6.14s

10.23s

26.21s

39.76s

98.75s

13.25s

tidb

0.64s

0.17s

0.30s

1.17s

0.44s

0.10s

0.37s

0.30s

0.70s

0.44s

 

ycsb测试

测试命令

读10000次计算执行时间

更新500次计算执行时间

tiup bench ycsb run tidb -p tidb.instances=127.0.0.1:4000 -p operationcount=10000

tiup bench ycsb run mysql -p tidb.instances=127.0.0.1:4001 -p operationcount=10000

tidb

Starting component `bench`: /var/root/.tiup/components/bench/v1.12.0/tiup-bench ycsb run mysql -p tidb.instances=127.0.0.1:4000 -p operationcount=10000 ***************** properties ***************** "command"="run" "tidb.instances"="127.0.0.1:4000" "operationcount"="10000" "dotransactions"="true" ********************************************** Run finished, takes 4.191237542s READ - Takes(s): 4.2, Count: 9495, OPS: 2267.3, Avg(us): 402, Min(us): 179, Max(us): 7951, 99th(us): 705, 99.9th(us): 3519, 99.99th(us): 7007 UPDATE - Takes(s): 4.2, Count: 505, OPS: 120.7, Avg(us): 675, Min(us): 419, Max(us): 2497, 99th(us): 1117, 99.9th(us): 1926, 99.99th(us): 2497

 

mysql

tiup is checking updates for component bench ... Starting component `bench`: /var/root/.tiup/components/bench/v1.12.0/tiup-bench ycsb run mysql -p tidb.instances=127.0.0.1:4001 -p operationcount=10000 ***************** properties ***************** "operationcount"="10000" "dotransactions"="true" "command"="run" "tidb.instances"="127.0.0.1:4001" ********************************************** READ - Takes(s): 10.0, Count: 4522, OPS: 452.5, Avg(us): 2086, Min(us): 778, Max(us): 151423, 99th(us): 8687, 99.9th(us): 26655, 99.99th(us): 151423 UPDATE - Takes(s): 9.9, Count: 234, OPS: 23.6, Avg(us): 2306, Min(us): 972, Max(us): 10543, 99th(us): 7859, 99.9th(us): 10543, 99.99th(us): 10543 Run finished, takes 19.66040875s READ - Takes(s): 19.7, Count: 9506, OPS: 483.7, Avg(us): 1955, Min(us): 778, Max(us): 151423, 99th(us): 7867, 99.9th(us): 17759, 99.99th(us): 41343 UPDATE - Takes(s): 19.6, Count: 494, OPS: 25.2, Avg(us): 2080, Min(us): 807, Max(us): 10543, 99th(us): 6959, 99.9th(us): 10543, 99.99th(us): 10543

 

结论

tp性能测试

read 9506count

update 494 count

mysql

19.6s

19.7s

tidb

4.2s

4.2s

 

亚马逊上的费用对比

三实例aws Aurora费用

 

 

cpu

实例小时费用

存储费用小时

io1万次数

总费用

主读

r5.4xlarge

16

2.3200 USD

每月每 GB 0.12 USD

每月每 IOPS 0.27

 

主写

r5.4xlarge

16

2.3200 USD

每月每 GB 0.12 USD

每月每 IOPS 0.27

 

redshift最低配

dc2.8xlarge

32

 

 

 

4,449.35

月费用

 

 

3340.8

491.52

5400

9232.32

aurora预估费用页面 https://aws.amazon.com/cn/rds/aurora/pricing/?pg=pr&loc=1 存储费率 每月每 GB 0.12 USD 每月每 GB 0.27 USD I/O 费率 每 100 万个请求 0.24 USD 包含

 

aws rds费用

 

 

cpu

实例小时费用

存储费用小时

io1万次数

总费用

主读

r5.4xlarge

16

2.2800 USD

每月每 GB 0.375 USD

每月每 IOPS 0.30

 

主写

r5.4xlarge

16

2.2800 USD

每月每 GB 0.375 USD

每月每 IOPS 0.30

 

redshift最低配

dc2.8xlarge

32

 

 

 

4,449.35

月费用

 

 

5088.96

1536

6000

10819.2

rds预估费用页面 https://aws.amazon.com/cn/rds/mysql/pricing/?pg=pr&loc=2 多可用区存储费率 每月每 GB 0.45 USD 多可用区预调配 IOPS 费率 每月每 IOPS 0.36 USD

 

tidb 非高可用方案 冷磁盘250m峰值读取

 

 

cpu

实例小时费用

20t cold hhd

gp3 1t(给tiflash)

总费用

pd

c5.2xlarge

8

0.192

0

 

 

tidb

c5.4xlarge

16

0.856

0

 

 

kv

r5.4xlarge

16

1.096

200

200

 

月费用

 

 

1543.68

200

200

1943

优点:

费用便宜只需要1943元就能完成大数据的计算任务。如果好后期可以扩容支撑大数据计算业务

tiflash采用计算分离架构节约80%费用

TiFlash 存算分离架构与 S3 支持

缺点:

本方案是单点tidb。如果ec2宕机,需要代码遇到tidb无法写入时,不再删除mysql原始库的数据。等待处理

 

tidb高可用三副本

 

 

cpu

实例小时费用

20t cold hhd(1月)

gp3 1t(给tiflash)

总费用

pd

c5.2xlarge

8

0.192

0

 

 

pd

c5.2xlarge

8

0.192

0

 

 

pd

c5.2xlarge

8

0.192

0

 

 

tidb

c5.4xlarge

16

0.856

0

 

 

tidb

c5.4xlarge

16

0.856

0

 

 

kv

r5.4xlarge

16

1.096

200

 

 

kv

r5.4xlarge

16

1.096

200

 

 

kv

r5.4xlarge

16

1.096

200

200

 

月费用

 

 

4631.04

600

200

5431.04

优点:

费用便宜只需要5431元就能完成大数据的计算任务。如果好后期可以扩容支撑大数据计算业务

并且是三副本高可用的版本。不存在宕机问题

tiflash采用计算分离架构节约80%费用

https://docs.pingcap.com/zh/tidb/stable/tiflash-disaggregated-and-s3

缺点:

相比单节点费用较高。保证了业务可用性。

 

结论

感觉tidb上了后会节约至少一半的费用。

整体算下来 aurora的费用会比rds便宜因为aurora的存储基于s3的三副本。存储费用低。

而自建tidb的存储价格会比aurora低。合理利用s3,hhd,gp3,不同存储的搭配会节省出不少费用。s3作为aws的引流产品价格是出奇的低我恨不得任何时候任何产品后段都挂载s3.实现容量和性价比的

tidb

费用对比

费用比

single

1943

0.35

tidb

5431.04

1.0

rds

10819.2

2.0

Aurora

9232.32

1.7

 

0
0
0
1

版权声明:本文为 TiDB 社区用户原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接和本声明。

评论
暂无评论