0
1
1
0
专栏/.../

用tidb来帮助企业节省成本。我们做一次aws上的数据库成本分析

 tidb狂热爱好者  发表于  2023-12-29

项目背景介绍

有一个400t的历史库需要做数据分析,节能减排,减容增效。今年大环境不好,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 960 5400 9700

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 3000 6000 12319.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 400 0
月费用 1543.68 200 0 1943

优点:

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

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

TiFlash 存算分离架构与 S3 支持

缺点:

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

tidb高可用三副本

cpu 实例小时费用 40t 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 400
kv r5.4xlarge 16 1.096 400
kv r5.4xlarge 16 1.096 400 0
月费用 4631.04 1200 0 5831.04

优点:

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

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

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

TiFlash 存算分离架构与 S3 支持

缺点:

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

结论

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

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

而自建tidb的存储价格会比aurora低。合理利用s3 hhd和gp3 不同存储的搭配会节省出不少费用。

tidb 费用对比 费用比
single 1943 0.35
tidb 5431.04 1.0
rds 10819.2 2.0
Aurora 9232.32 1.7

本文是按照美元计价的月费用如果rmb计价就很恐怖了。

tidb 费用对比 费用比
single 163212 0.35
tidb 456207.36 1.0
rds 960749.4 2.0
Aurora 819830.016 1.7

一个数据库一年的话费能从上百万减少到16万

0
1
1
0

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

评论
暂无评论