缘起
我们公司是做SAAS的,具体的说是企业信息系统。
信息系统的特点,是数据量不算很大,但表特别多,并发很小,但查询逻辑非常复杂。
目前我们大概有几十亿条数据,3000多张表,TP+AP的并发不到100。
三年多以前,我们刚创业,做数据库选型时,跟东旭聊过,考察过TIDB。当时还没有TiFlash,TIDB的AP性能不够用,最后选了hadoop体系下的impala+kudu的方案。当时东旭跟我说,要做列存,做了列存AP就快了,超过impala那都不叫事。
impala+kudu的方案没有多行事务支持,我们在业务层做了很糙的事务处理,勉强支撑到现在。但这不是长久之计,而且国产化也是趋势,所以我又再次考虑数据库选型的问题。
三年多了,东旭吹过的牛B圆上了没,我们拭目以待。
环境准备
OLTP的性能,我不打算测,我们这点并发,哪怕是单机mysql都绰绰有余,所以只考察OLAP能力。
考察OLAP,我们会从很多角度,大部分是跟我们业务相关的,没有通用性,所以不在此赘述。
在这里只对比标准数据集tpcds下的性能。
由于我们是小数据量的场景,所以只使用50G的数据进行测试。
更大数据量的测试,以我的经验来看,只要硬件不出现瓶颈,对比结果不会相差很大。
测试用到的数据和脚本:
https://github.com/huaj1101/tpcds-tidb-impala
测试使用的集群配置及部署情况:
tidb version:5.4
impala version:3.2 (版本较老,是目前我们在用版本)
节点配置 | 数量 | tidb部署内容 | hadoop部署内容 |
---|---|---|---|
16c 64g 150G ssd云盘 | 3 | pd * 3 tidb * 3 monitor * 1 | master * 3 |
16c 64g 500G ssd云盘 | 3 | tikv * 3 tiflash * 3 | data * 3 |
测试结果
query | tidb | impala |
---|---|---|
sum | 172.29 s | 204.76 s |
query01 | 1.03 | 0.75 |
query02 | 1.5 | 2.27 |
query03 | 0.5 | 0.24 |
query04 | 6.73 | 13.62 |
query06 | 0.65 | 0.79 |
query07 | 2.56 | 0.44 |
query10 | 0.58 | 0.45 |
query11 | 3.7 | 9.13 |
query12 | 0.17 | 0.2 |
query13 | 1.88 | 5.29 |
query15 | 0.8 | 0.82 |
query16 | 1.27 | 1.36 |
query17 | 1.88 | 1.08 |
query19 | 0.7 | 0.36 |
query20 | 0.26 | 0.22 |
query21 | 0.65 | 0.14 |
query25 | 1.75 | 0.56 |
query26 | 0.8 | 0.38 |
query28 | 4.48 | 3.66 |
query29 | 1.73 | 0.84 |
query30 | 0.6 | 0.68 |
query31 | 1.83 | 1.33 |
query32 | 0.45 | 0.38 |
query33 | 1.04 | 0.38 |
query34 | 0.63 | 0.44 |
query35 | 0.94 | 2.28 |
query37 | 0.34 | 0.38 |
query39 | 1.16 | 0.63 |
query40 | 1.84 | 0.45 |
query41 | 7.27 | 0.09 |
query42 | 0.57 | 0.11 |
query43 | 1.17 | 6.1 |
query46 | 0.89 | 0.56 |
query47 | 5.93 | 8.01 |
query48 | 1.99 | 4.33 |
query49 | 1.33 | 1.36 |
query50 | 1.89 | 1.19 |
query51 | 15.51 | 17.35 |
query52 | 0.48 | 0.12 |
query53 | 0.71 | 0.26 |
query54 | 2.1 | 1.06 |
query55 | 0.52 | 0.14 |
query56 | 0.74 | 0.27 |
query57 | 2.71 | 4.31 |
query58 | 0.71 | 3.41 |
query59 | 4.08 | 10.09 |
query60 | 0.96 | 0.39 |
query61 | 0.94 | 0.26 |
query62 | 0.69 | 5.51 |
query63 | 0.75 | 0.27 |
query64 | 6.39 | 7.37 |
query65 | 7.53 | 5.61 |
query68 | 0.9 | 0.58 |
query69 | 0.65 | 0.5 |
query71 | 0.83 | 0.3 |
query72 | 9.72 | 2.71 |
query73 | 0.58 | 0.44 |
query74 | 8.62 | 6.11 |
query75 | 10.2 | 7.67 |
query76 | 0.43 | 1.95 |
query78 | 9.77 | 15.82 |
query79 | 1.81 | 1.77 |
query81 | 0.57 | 0.59 |
query82 | 0.41 | 0.54 |
query83 | 0.52 | 0.62 |
query85 | 1.22 | 1.93 |
query88 | 2.82 | 3.49 |
query89 | 1.32 | 0.69 |
query90 | 0.22 | 0.78 |
query91 | 0.3 | 0.32 |
query92 | 0.4 | 0.28 |
query93 | 2.06 | 6.17 |
query94 | 0.86 | 1.23 |
query95 | 2.16 | 2.01 |
query96 | 0.43 | 0.7 |
query97 | 4.49 | 9.31 |
query98 | 0.59 | 0.24 |
query99 | 2.1 | 10.29 |
资源占用
tidb
impala
总结
TIDB 5.4现在的OLAP性能已经跟上,综合性能比impala 3.2高15%左右,东旭吹过的牛B圆的很好。
TIDB 跑OLAP时的资源占用还有很大的优化空间,CPU和网络IO比impala高一倍以上。