DLI预置的SQL模板中TPC-H样例数据说明
TPC-H样例数据简介
TPC-H(商业智能计算测试) 是交易处理效能委员会(TPC,Transaction Processing Performance Council) 组织制定的用来模拟决策支持类应用的一个测试集。目前,在学术界和工业界普遍用来评价决策支持技术方面应用的性能。这种商业测试可以全方位评测系统的整体商业计算综合能力,对厂商的要求更高,同时也具有普遍的商业实用意义,目前在银行信贷分析和信用卡分析、电信运营分析、税收分析、烟草行业决策分析中都有广泛的应用。
TPC-H 基准测试是由 TPC-D(由 TPC 组织于 1994 年指定的标准,用于决策支持系统方面的测试基准)发展而来的。TPC-H用3NF实现了一个数据仓库,共包含8个基本关系,其数据量可以设定从1G~3T不等。TPC-H 基准测试包括 22 个查询(Q1~Q22),其主要评价指标是各个查询的响应时间,即从提交查询到结果返回所需时间。TPC-H 基准测试的度量单位是每小时执行的查询数( QphH@size),其中“H”表示每小时系统执行复杂查询的平均次数,“size”表示数据库规模的大小,能够反映出系统在处理查询时的能力。TPC-H 是根据真实的生产运行环境来建模的,这使得它可以评估一些其他测试所不能评估的关键性能参数。总而言之,TPC组织颁布的TPC-H 标准满足了数据仓库领域的测试需求,并且促使各个厂商以及研究机构将该项技术推向极限。
本示例将演示DLI直接对存储在OBS中的TPC-H数据集进行查询的操作,DLI已经预先生成了100M的TPC-H-2.18的标准数据集,已将数据集上传到了OBS的tpch文件夹中,并且赋予了只读访问权限,方便用户进行查询操作。
TPC-H的测试和度量指标
TPC-H 测试分解为3 个子测试:数据装载测试、Power测试和Throughput测试。建立测试数据库的过程被称为装载数据,装载测试是为测试DBMS装载数据的能力。装载测试是第一项测试,测试装载数据的时间,这项操作非常耗时。Power 测试是在数据装载测试完成后,数据库处于初始状态,未进行其它任何操作,特别是缓冲区还没有被测试数据库的数据,被称为raw查询。Power测试要求22 个查询顺序执行1 遍,同时执行一对RF1 和RF2 操作。最后进行Throughput 测试,也是最核心和最复杂的测试,更接近于实际应用环境,与Power 测试比对SUT 系统的压力有非常大的增加,有多个查询语句组,同时有一对RF1 和RF2 更新流。
测试中测量的基础数据都与执行时间有关,这些时间又可分为:装载数据的每一步操作时间、每个查询执行时间和每个更新操作执行时间,由这些时间可计算出:数据装载时间、Power@Size、Throughput@Size、QphH@Size 和$/QphH@Size。
Power@Size 是Power 测试的结果,被定义为查询时间和更改时间的几何平均值的倒数,公式如下:
其中:Size 为数据规模;SF 为数据规模的比例因子;QI (i,0)为第 i个查询的时间,以秒为单位;R(I j,0)为 RFj更新的时间,以秒为单位。
Throughput@Size 是Throughput 测试的结果,被定义为所有查询执行时间平均值的倒数,公式如下:
业务场景
用户可以通过DLI内置的TPC-H测试套件进行简单高效的交互式查询,无需用户上传数据,即可以体验DLI的核心功能。
DLI内置TPC-H的优势
- 用户只需要登录DLI,完成授予权限,即可操作SQL语句,无需用户自己创建表和导入数据。
- 预置22条TPC-H SQL查询模板,功能丰富,可满足大部分的商业场景,无需用户自行下载TPC-H的查询语句,省时省力。
- 用最小的时间代价体验serverless化的DLI产品,领略数据湖带给我们的全新体验。
注意事项
子账号使用TPC-H测试套件时,需要主账号为子账号赋权OBS访问权限和查看主账号表的权限;如果主账号未登录过DLI服务,子账号除上述权限外,还需要创建数据库和创建表的权限。
使用TPC-H样例模板开发并提交SQL作业
为了便捷快速地执行SQL操作,DLI支持定制模板或将正在使用的SQL语句保存为模板。保存模板后,不需编写SQL语句,可通过模板直接执行SQL操作。
- 登录DLI管理控制台。
- 在DLI管理控制台,选择“作业模板”>“SQL模板”>“样例模板”,在“tpchQuery”下找到“Q1_价格摘要报告查询”样例模板,单击操作列的“执行”进入“SQL编辑器”。
- 在“SQL编辑器”页面右侧的编辑窗口上方,“执行引擎”选择“spark”,“队列”选择“default”,“数据库”选择“default”,单击“执行”。
- SQL作业编辑窗口下方“查看结果”页签查看查询结果。
本示例使用系统预置的“default”队列和数据库进行演示,也可以在自建的队列和数据库下执行。