基础介绍
TPC基准™H(TPC-H)是一个决策支持基准。它由一系列面向业务的即席查询和并发数据修改组成。选择的查询和填充数据库的数据具有广泛的行业相关性,同时保持足够的易实现性。这个基准说明了决策支持系统
- 检查大量数据;
- 行高度复杂的查询;
- 回答关键业务问题
查询特点
TPC-H通过在受控条件下对标准数据库执行一组查询来评估各种决策支持系统的性能。TPC-H查询:
- 回答现实世界中的商业问题
- 模拟生成的即席查询
- 比大多数OLTP事务复杂得多
- 包含丰富的操作员范围和选择性约束
- 在被测系统的数据库服务器组件上生成密集活动
- 针对符合特定人口和规模要求的数据库执行
- 通过与在线生产数据库保持密切同步而产生的约束来实现
运行建模
- 该数据库每周7天、每天24小时连续可用,用于多个最终用户的临时查询和对所有表的数据修改,偶尔(如每月一次)维护会话除外;
- TPC-H数据库通过正在进行的刷新功能跟踪OLTP数据库的状态,可能会有一些延迟,这些刷新功能将影响决策支持数据库某些部分的一些修改批处理在一起;
- 由于TPC-H数据库中存储的业务数据的全球性质,查询和刷新功能可随时针对数据库执行,尤其是相互关联的查询和刷新功能。此外,由于查询和刷新功能可能同时执行,因此查询和刷新功能的组合受特定要求的约束;
- 为了在性能和操作要求之间实现最佳折衷,数据库管理员可以一次性设置查询和刷新功能的锁定级别和并发调度规则。
指标介绍
- QphH@Size:每小时复合查询性能指标。反映了系统处理查询能力的多个方面。这些方面包括执行查询所依据的选定数据库大小、由单个流提交查询时的查询处理能力以及由多个并发用户提交查询时的查询吞吐量
- $/kQphH@Size:价格/性能指标
- Availability Date:系统可利日期
相关文件介绍
dss.ddl
该文件里面包含了 创建表的 8 条 SQL 语句。
dss.ri
这里是创建表约束的 SQL 语句,例如主键与外键。
/queries 文件夹
该文件夹下面是 22 条查询 SQL。
上一层的 /ref_data 文件夹
该文件夹里面存放了,填充数据表所需要的数据。
dbgen 与 qgen
dbgen 是用来生成与填充 符合基准的数据表的程序,来帮助我们简单的构建符合要求的数据表与数据。
qgen 是基于基准的查询程序,来帮助我们构建一个简单的基准实现。
以上两个可执行文件,均需要编译生成
工具的编译安装
# 用来解压 zip 包的 unzip 命令 yum install unzip # 用来 编译链接 的必备环境 yum install gcc yum install make
指标计算
QphH@Size
Power
QI(i,0):功率测试的单个查询流中查询Q的计时间隔(以秒为单位)。取最大的查询时间
RI(j,0):是功率测试的单个查询流中刷新函数RF的计时间隔(以秒为单位)
size:大小是为测量选择的数据库大小
Throughput Numerical Quantity
定义:为在测量间隔长度上执行的查询总数的比率,Throughput@Size是每小时查询数*比例因子,报告到小数点后一位,四舍五入到最接近的0.1
T:定义的测量间隔
S:吞吐量测试中使用的查询留数
size:大小是为测量选择的数据库大小
Query-Per-Hour Performance Metric
注:QphH@Size是每小时查询数*比例因子,报告到小数点后一位,四舍五入到最接近的0.1
Price-per-kQphH@Size
注:QphH@Size四舍五入至最高分(例如,12.123美元的价格/性能必须显示为12.13美元)
数据库实体、关系和特征
*注:每个表名后面的括号包含该表列名的前缀;
•箭头指向表之间一对多关系的方向;
•每个表名下面的数字/公式表示表的行数。一些通过SF (Scale Factor)进行因式分解,得到所选择的数据库大小
RF更新函数
刷新功能概述
22个决策支持查询和两个数据库刷新函数,它们必须作为TPC-H基准测试的一部分执行
每个刷新功能由以下组件定义:
- 业务原理,说明可使用刷新功能的业务环境;
- 刷新功能定义,在伪代码中定义刷新功能要执行的功能;
- refresh data set(刷新数据集),它定义了每次执行刷新功能时要插入或删除到ORDERS和LINEITEM表中的行集。这组行代表这两个表初始总体的0.1%
刷新函数定义
RF1(新的销售刷新功能)
目的
这个更新函数增加新的销售信息到数据库
商业原理
新销售更新函数以一定的缩放比例和移植数据库时所用的数据产生方法向ORDERS和LINEITEM表中加入新的行
更新函数定义
LOOP (SF * 1500) TIMES INSERT a new row into the ORDERS table LOOP RANDOM(1, 7) TIMES INSERT a new row into the LINEITEM table END LOOP END LOOP
更新数据设置
将要插入的行数据必须是DBGEN使用-u选项,这个选项会产生和你在多流测试中所需一样多的行
RF2(旧的销售刷新功能)
目的
此更新函数将旧的销售信息从数据库中删除
商业原理
旧销售更新函数从数据库的ORDERS和LINETIEM表中删除行,以去掉过时的信息
更新函数定义
LOOP (SF * 1500) TIMES DELETE FROM ORDERS WHERE O_ORDERKEY = [value] DELETE FROM LINEITEM WHERE L_ORDERKEY = [value] END LOOP
刷新数据集
DBGen必须使用-U选项生成要插入的行集。这个选项将要产生在多流测试中所需的足够多的主键集,将要删除的行从两个目标表的第一行开始,
TPC源代码的DBGEN和QGEN版本2.18.0用于生成所有数据库填充
测试流程
Power Test
定义:必须由单个刷新流并行执行
流程:
- 刷新功能RF1由刷新流执行
- 整个查询集由查询流执行一次
- 刷新功能RF2由刷新流执行
吞吐量测试
吞吐量测试表:所需的最小流计数
*注:吞吐量测试必须立即进行一次,而且只有一次,功率测试。在功率测试和吞吐量测试之间,不能对SUT的配置进行任何更改
测试报告
必含指标
必须包含的内容如下:
- 测试数据库的大小,单独表示或作为度量名称的一部分(例如QphH@10GB);
- TPC-H性能指标,QphH@Size;
- TPC-H价格/性能指标$/kQphH@Size;
- 定价配置的可用日期
示例:RALF/3000服务器将于1999年4月1日开始发货,其额定值为3010,324QphH@10000GB和68.21$/kQphH@10000GB.
必含内容