1. 絮絮叨叨
- 读书的时候,帮师兄打过下手:在不同的大数据组件上,执行TPC-H的benchmark,测试改造后的HDFS的性能
- 工作中,需要选择合适的benchmark对改造后的Presto进行测试
- 在benchmark的调研的过程中,又关注到了大名名鼎鼎的TPC-H
- 在学习的过程中发现,TPC提供了很多不同用处的benchmark,需要根据实际情况选择合适的benchmark
2. 什么是TPC
-
在TPC的官网首页,有这样一段介绍:
The TPC is a non-profit corporation focused on developing data-centric benchmark standards and disseminating objective, verifyable data to the industry.
-
大致的中文意思为:TPC 是一家非营利性公司,专注于开发以数据为中心的benchmark标准,并向行业传播客观、可验证的数据。
-
TPC的全称为:Transaction Processing Performance Council
-
TPC为很多数据场景提供了标准的benchmark:
- 2007年2月,获得批准的OLTP的benchmark —— TPC-E
- TPC-DS:适用于
Decision Support
的benchmark,为决策支持系统的提供通用的性能评估。其他博客的介绍:模拟大型零售业务的系统,主要用于BI和决策支持,数据量和OLAP查询复杂度都很高,是TPC数据集中最大的 - TPC-H:也属于
Decision Support
的benchmark,但侧重于ad-hoc(即席)查询,其前身为TPC-D。博客《向Hive导入TPC-H测试数据集》:TPC-H可以视作TPC-DS的简化版本
-
除此之外,还有关于大数据、物联网(IoT)、人工智能(AI)等的benchmark,感兴趣可查看TPC官网的Benchmarks/ Results
3. 为什么选择TPC-H?
- 从了解到的资料来看,TPC-H和TPC-DS都比较适合决策支持系统
3.1 关于TPC-H
- TPC-H是业界常用的一套Benchmark,由TPC委员会制定发布,用于评测数据库的分析型查询能力。
- TPC-H查询包含8张数据表、22条复杂的SQL查询,大多数查询包含若干表Join、子查询和Group-by聚合等。
- 参考文档:
3.2 关于TPC-DS
- 相对TPC-H,TPC-DS更加全面
- TPC-H的22个查询主要为ad-hoc查询,而TPC-DS的99个查询,可以分为:纯粹的 reporting queries、纯粹的ad-hoc queries、迭代的OLAP queries、extraction or data mining queries
- 参考博客:A Summary of TPC-DS
3.3 为什么不选择更全面的TPC-DS?
- 博客10 Questions: the TPC-H Benchmark甚至还明确指出:
- TPC-DS的功能更强大,但是那些使用TPC-DS进行测试的报告中,并未明确说明:99个查询,是否能全部跑成功
- 他们一般都是选择99个查询中,较为简单的一些查询进行测试
- 从基于Presto的性能测试中,我们也可以发现:使用TPC-DS作为benchmark时,并不是99个查询都执行
- 例如,Think Presto Is Fast? Dremio Is Up to 12x Faster中,就只执行了99个查询中的部分查询
- 同时,考虑到TPC-DS在两次执行的中间,会对数据进行修改(data maintenance operations)
- 而我们的Presto目前主要定位还是BI报表和ad-hoc查询,不涉及数据的更新操作
- 因此,本人觉得选择TPC-H作为性能测试的benchmark更加合适