缘起
我们公司是做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高一倍以上。