从测试结果看UDW为何比MySQL更适合数据分析? | U刻
  • 从测试结果看UDW为何比MySQL更适合数据分析?

    栏目:产品动态

    UDW(UCloud Data Warehouse)是大规模并行处理数据仓库产品,是基于PostgreSQL开发的大规模并行、完全托管的PB级数据仓库服务。UDW可以通过SQL让数据分析更简单、高效,为互联网、物联网、金融、电信等行业提供丰富的业务分析能力。

    UDW基础架构的详细解析,可参见本系列第一篇《UDW:有容乃大 UCloud数据仓库UDW架构解析》

    UDW的分布式架构设计和并发执行任务特性,使其天然适合数据量大、复杂度高的数据分析类工作。

    数据分析是指用适当的统计分析方法对收集来的大量数据进行分析,提取有用信息和形成结论而对数据加以详细研究和概括总结的过程。随着大数据时代对数据价值的愈加重视,数据分析正广泛应用于金融、零售、电商、教育、交通、医疗、舆情等各行各业。数据分析必然会涉及两个要素:

    (1)海量数据的存储;

    (2)对数据的频繁复杂操作;

    数据分析的工具多种多样,从最原始的Excel、shell脚本,到目前大数据行业风行的Hadoop、Spark等产品。以数据库系统而言,在UDW这一大规模数据仓库出现前,不少用户是选择关系型数据库MySQL来进行数据分析的。

    MySQL是世界上使用最广泛的开源数据库。其成熟、简单易用的特性吸引了众多用户,巨大的基数和使用惯性导致不少用户继续用MySQL来做数据分析。然而,作为关系型数据库的典范,MySQL虽然在OLTP(联机事务处理)方面有着很好的表现,但在数据分析领域所要求的海量数据、高复杂度操作上,MySQL相比UDW却会有所不足。后文就会通过流行的数据库基准测试工具TPC-H,来分析UDW和MySQL在数据分析能力上的异同。

    TPC-H是由TPC(Transaction Processing Performance Council,事务处理性能委员会)公布的一套针对数据库决策支持能力的测试基准。TPC-H通过模拟数据库中与业务相关的复杂查询和并行的数据修改操作,来考察数据库的综合处理能力,获取数据库操作的响应时间和每小时执行的查询数等性能指标。

    下面我们通过TPC-H在多种不同测试场景下的模拟,来系统地比较MySQL和UDW在数据分析能力上的优劣。涉及场景包括:MySQL普通表、MySQL分区表、MySQL Merge分表、UDW5个节点、UDW10个节点、UDW分区表等。

    测试环境

          硬件配置

    • MySQL:24核64G、2.4T的SSD数据盘
    • UDW:单节点2核12G 、300G SSD数据盘,5或10个节点

      测试数据

    • 300G:单表最大260G、18亿行

      测试SQL

    • 单表聚合:对最大表lineitem进行聚合过滤计算
    • 两表join、聚合:对应TPC-H基准的6.sql
    • 三表join、聚合:对应TPC-H基准的3.sql
    • 四表join、聚合:对应TPC-H基准的10.sql

    MySQL vs 5个节点的UDW

    首先是最基本的MySQL普通表和5节点UDW间的性能比较。

    1
    图1 MySQL VS UDW

    从结果分析,MySQL和UDW在单表简单聚合的时候都能在秒级返回,当两表join、聚合和多表join、聚合的时候MySQL的处理能力就会差很多,当join的复杂度增加的时候,MySQL的处理能力一般,四个表join、聚合用了4个多小时。UDW表现比较稳定、这几个场景下都能在1分钟内返回结果。

    MySQL分区表VS 5个节点的UDW

    下面我们对MySQL中的lineitem、orders表按时间进行分区继续测试,测试结果如下。

    2

    图2 MySQL 分区表VS UDW

    可以看出,通过分区处理之后、MySQL在处理两个表格join的时候性能增加明显,114s返回了结果。但是处理多表join、聚合的时候还是比较吃力。

    MySQL Merge分表VS 5个节点的UDW

    下面我们再对MySQL中的lineitem、orders使用Merge分表再看看测试结果。

    3

    图3 Merge分表 VS UDW

    可见,对MySQL做 Merge分表之后、两表join的性能又有所提升,82s能够返回结果,但是三表、四表的join、聚合表现还不是很好。

    UDW分区表

    UDW也支持表格的分区,我们对lineitem、orders表进行分区,得到如下的测试结果。

    4

    图4 UDW分区前 VS UDW分区后

    从图表可见,UDW使用分区之后,大部分场景性能有明显提升。但如果分区不当或者分区条件在查询的时候没有用到,会增加分区管理的开销,性能会有所下降。

    UDW 5个节点 VS UDW 10个节点

    当UDW节点增加一倍时,性能能否随节点数一起提高呢?测试结果如下。

    5

    图5:UDW不同节点个数性能对比

    通过上述结果,我们可以看到当UDW节点增加一倍的时候,UDW的数据处理能力也增加明显,UDW增加节点就可以线性地提高系统的存储和数据处理能力。

    结语

    本文只对数据查询性能进行了测试,从前述测试结果,可以看出UDW在海量数据分析方面的极佳性能,在这一领域UDW是胜于MySQL的。而MySQL在OLTP方面则有着比较大的优势,作为业务数据库时,MySQL是很不错的选择。

    事实上,作为新一代的数据仓库,UDW凭借其高效的数据分析能力、良好的线性扩展能力、稳定可靠、简单易用的特性,已经获得了众多用户的认可。另外UDW已经支持了开源的数据仓库产品Greenplum,为用户提供多样化的选择。

    在本系列的下一篇文章中,我们将通过更具体深入的使用场景和用户案例,来向大家展示如何对症下药,把UDW的长处发挥到极致。