ITPub博客

首页 > 数据库 > > Greenplum、TiDB、CockroachDB 谁是第一?【用户实测HTAP数据库性能】

Greenplum、TiDB、CockroachDB 谁是第一?【用户实测HTAP数据库性能】

作者:u_9ff4c058a0e0 时间:2022-04-08 16:04:38 0 删除 编辑

传统数据库领域包含两大业务场景:OLTP和OLAP。过去,两大业务场景需要依赖不同的数据库产品,数据在不同数据库之间融通的过程中往往容易产生数据孤岛、数据的时效性、数据的一致性等问题。因此,近年来支持HTAP混合负载的数据库产品正在受到越来越多的关注。如何实现一款优秀的HTAP数据库,业界有不同的声音。


一方面,以TiDB为代表的新兴数据库厂商选择从头做起,搭建一款HTAP原生数据库。另一方面,以Greenplum为代表的成熟数据库厂商选择在自己的优势产品中引入对HTAP的支持。其中,Greenplum6.0通过引入全局死锁检测、优化全局事务、升级PG内核等优化,实现了在OLTP上性能的飞跃。那么,这些HTAP数据库的性能究竟如何呢?


下面对三款数据库:Greenplum、CockroachDB和TiDB 进行了相关场景的性能测试。下面,让我们来看一下测试结果。


此次性能测试场景分为OLTP的TPC-C和TPC-B测试以及简单的OLAP统计聚合场景(作为一款OLAP数据库,Greenplum对复杂场景支持优异,而大多数新兴HTAP数据库还不能很好的支持复杂场景,所以本测试只测试简单OLAP场景),所有测试都是通过186代理节点进行测试,CockroachDB(后文简称CRDB)和Greenplum使用相同的节点进行分段测试,由于是使用的虚拟机性能对三个分布式来说不会太高,废话不多说直接上测试数据,我们先看下整体的对比情况:


1.基础环境


1.1硬件环境:




1.2软件环境:



2.整体的LTP测试情况对比


sysbench测试脚本是为PostgreSQL设计,其中用到了SELECT FOR UPDATE。Greenplum 6.x还不支持 SELECT FOR UPDATE,所以通过pgbench对Greenplum再进行一轮测试。(Greenplum 7将支持SELECT FOR UPDATE)





Greenplum 6.7.1pgbench测试,通过自己写的脚本实现的三个场景。





3.OLAP简单场景统计性能对比


t1、t2表各生成1亿记录:包含id、int类型、字符类型、时间类型、浮点型。由于TiDB和CRDB对复杂的统计分析场景支持不好(如窗口函数、CTE等),所以采取简单场景测试:


准备测试表:


由于CRDB、TiDB一个事务中生成1亿记录未能完成(CRDB异常、TiDB异常缓慢),所以通过程序实现分段提交实现:

1.insert into t1 select id, random()*1000, md5(random()::text), clock_timestamp(), random()*1000 from generate_series(1,100000000) t(id);

2.insert into t2 select id, random()*1000, md5(random()::text), clock_timestamp(), random()*1000 from generate_series(1,100000000) t(id);


CRDB


20线程 每线程500万数据,双表同时写入,共耗时3200359毫秒。

按开始-结束时间统计单事务耗时:总耗时=单个事务提交*(2亿/1000/20),反推出单个事务提交320毫秒,这320包含了生成数据时间。程序逻辑:生成1000条数据 ->t1→t2。


按日志输出统计单事务耗时:


cat nohup.out |grep t1 |awk -F '1000条,耗时:' '{sum += $2} END {print "Average =",sum/NR}'


Average = 225.017


cat nohup.out |grep t2 |awk -F '1000条,耗时:' '{sum += $2} END {print "Average =",sum/NR}'


Average = 249.99


TIDB


cat nohup.out |grep t1 |awk -F '1000条,耗时:' '{sum += $2} END {print "Average =",sum/NR}'


Average = 295.407


cat nohup.out |grep t2 |awk -F '1000条,耗时:' '{sum += $2} END {print "Average =",sum/NR}'


Average = 350.562




由于CRDB主要针对OLTP优化,并不是一个真正意义上的HTAP数据库,下图我们将Greenplum与TiDB两款HTAP数据库OLAP性能数据进行对比。具体对比数据请参考上面的表格。





毫秒级的测试数据证明了Greenplum强大的OLAP性能

4.总结


综合来看Greenplum的OLAP能力卓越,OLTP场景支持的已经足够好。Greenplum在OLTP场景目前存在Master单节点的性能瓶颈,后续希望Greenplum做出突破。新型的HTAP分布式数据库,目前节点性能损耗还是比较严重的,HTAP 的优势应该是在节点足够多,能够成线性的增长,对特性这块的支持也是不尽相同,Greenplum是对原生关系型数据库支持特性最好的(完全支持,如触发器需要单节点使用)。


除了单纯OLAP和OLTP的性能考量之外,一个优秀的HTAP还需要考虑在混合负载的情况下,如何合理分配计算资源,避免发生AP和TP查询之间的资源抢占。针对混合负载,Greenplum的Resource Group特性基于cgroup技术,实现了CPU和内存资源在不同资源组之间的隔离,显著降低了AP负载和TP负载之间的相互影响。

来源 https://zhuanlan.zhihu.com/p/160780085

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69999831/viewspace-3139030/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2022-02-11

  • 博文量
    1828
  • 访问量
    20605