虽然本基准提供了一个能够代表很多决策支持系统的环境,但是并没有反映决策支持的所有要求。另外,客户所取得的性能和销售商标明的性能的接近程度强烈依赖于客户应用环境和TPC-H环境的相似程度。这种从测试而来的相对性能与在其他工作量或环境下的性能不一定一致。任何对于其他环境下性能的推断是不可取的。
测试结果很大程度上依赖于工作负荷,特定的应用要求,以及系统的设计与实现。系统性能会因为这样那样的因素而改变。因此,当用户在考虑关键能力计划或产品评估决定时TPC-H不应该被用作具体用户应用测试的代替品。
测试发起者可以提供多个系统设计,只要它们遵守第6章描述的模型。像第8章说明的那样,系统实现细节的完整公开报告(FDR)必须和测试结果同时提供。
注释1:为了保证主文档的可读性而被分离出去的注释和附录也是本标准的一部分,它们的规定也必须被遵守。
注释2:有些附录的内容只提供了电子档,而不包含在本文档的印刷品中。
0.2 一般系统实现原则
TPC测试的目的是为商业界使用者提供客观的性能数据,为了达到这个目的,TPC测试规范要求测试由系统,产品,技术以及定价多个部分组成,并且这些:
·是用户可以普遍得到的;
·是和某个TPC基准所代表的市场类别相一致的; ·对于相应的市场类别里的用户而言,较容易实现。
只要满足上面的要求,鼓励使用新的系统,产品,技术以及定价,但是严禁使用主要目的是为提高TPC测试性能而对于实际应用环境毫无实际用途的测试系统,产品,技术以及定价(以后统称为系统实现)。换句话说,就是所有仅以提高测试成绩为目的而不是以提高实际性能或改善实际定价为目的的“测试专用”系统实现是禁止的。
根据下面的特征可以判断某个系统实现是不是“测试专用”。没必要每点都满足,但是证据越多就越容易甑别一个不可接受的系统实现。在这样一个复杂问题上作出判断并不需要绝对的确定或是基于某个合理疑点上的确定。这个问题必须这样回答:“基于手头上的证据,大部分的证据是否表明本系统实现是“测试专用”。”
下面的这些特征可以判断一个系统实现是否是“测试专用”:
a) 这个系统实现是不是普遍可得,有没有证明文件和技术支持? b) 在TPC测试之外,这个系统实现在使用或应用上有没有重大的会限制它的应用的约
束?
c) 整个系统实现或部分系统实现是不是很蹩脚的集成到更大的产品中?
d) 这个系统实现是不是专门利用了TPC测试的有限性(如查询分布情况,查询混合,
并发或竞争,隔离要求等)?而在某种意义上这种针对性措施对于测试所对应的应用环境而言并没有广泛的实用性。 e) 这个系统实现是不是不为供应商看好?(这包括不能够成功地升级到和同类产品与
技术水平相近地系统。)
f) 这个系统实现有没有要求最终用户,程序员或系统管理员非常的熟练? g) 对于商家而言定价是不是非同寻常,或者和正常的商业行为而言定价是不是非同寻
常?如下的定价行为是可疑的: ·只有极少的客户可以得到的折扣; ·折扣被证明是非同寻常的;
·少量的得到超过25%的折扣而大量则会得到50%的折扣; ·定价是特价或抛售;
6
·对于折价商品在产品运输,质保或维护上有非同寻常的限制; 注释:本处列出的特征没有打算包括驱动和系统实现的特殊层,因为它们不一定是商业软件,而且它们有自己特殊的要求和在第六章中列举的限制。在第六章列出的特征和禁令用来判断驱动或系统实现的特殊层是不是“测试专用”。
0.3一般测量原则
TPC测试结果试图准确表现系统性能。因此在测量结果时应该遵守某些原则。测量时用到的步骤或方法不是在规范中明确描述就是留给测试发起者决定。
如果在规范中没有描述,那么测量的步骤和方法必须满足以下要求: ·方法是公认的工程惯例或标准; ·方法不会增强结果;
·测量结果所使用的仪器必须按照质量标准校准;
·在报告结果中的异常时要精确而坦率,即使在测试要求中并没有特殊要求。 注释:鼓励使用新方法只要它们满足上面的要求。
条款1数据库逻辑设计
1.1 商业和应用环境
TPC Benchmark H测试由一系列商业查询组成,这些查询在某种意义上代表复杂的商业分析应用。这些查询给出了一个实际的环境,描绘了批发商的活动以帮助读者将该基准的组件联系起来。
TPC-H不代表任何特定商业领域里的活动,而是可以被应用到任何需要管理,销售或在全球范围销售某种商品的行业。(比如汽车租赁,食品销售,供应商等)。但TPC-H并不是如何构建实际信息分析系统的模型。
测试的目的是减少在信息分析应用中出现的操作的多样性,同时又保留应用最根本的性能特征,也就是:系统的利用率和操作复杂度。要完全管理一个商业分析环境需要执行大量不同类型和复杂度的查询。因为查询的运行时间,占用的系统资源以及被执行的频率(不符合决策支持的特性),许多查询的主要目的并不是性能分析。被选择的查询具有以下特征:
·它们非常复杂;
·它们选择各种各样的访问模式; ·它们带有在随机特性;
·它们检查可获得数据的大部分 ·它们互不相同
·它们含有查询参数并在执行时变化
所选择的查询要为下面各类商业分析提供答案: ·定价和促销; ·供货和需求管理; ·利润和收入管理; ·顾客满意度研究; ·市场份额研究; ·运输管理。
虽然重点是信息分析,但本测试也认可数据库定期更新的需要。这个数据库既不是商业运作数据库的一次快照也不是一个支持OLTP程序并行操作的数据库。这个数据库必须能够全天候支持对所有表的查询和更新。
7
虽然本测试模拟了一个视更新操作为数据维护不可分割的部分的商用环境。但是实际上,测试中的更新操作没有模拟商用环境的这个方面。它的目的更主要是展示DBMS的更新能力,同时评估维护辅助数据结构的性能代价,比如次索引。
注释:本测试不包含任何用来验证数据库连续性的测试,也没有特定的系统功能可以设置为用来测试数据库的连续性。持续性和全天候工作能力的定义包含在测试规范中,这为预期的决策支持系统描绘了一幅更完美的图画。一个系统实现即使没有全天候工作的能力,但只要它满足规范中描述的要求也能产生相应的测试结果。
决策者
决策支持 数据库
商业
分析
商业操作
OLTP 数据库
OLTP事务
图一:上图说明了TPC-H所对应的商用环境,并且突出了TPC-H测试和其他TPC测试的根本区别。 其他TPC基准模拟了商用环境的操作端,在这一端事务以实时的基础被执行。而TPC-H测试则模拟了商用环境的分析端,在这一部分计算出未来走势、产生了精炼的数据。然后这些东西被用于产生合理的商业决策。在OLTP测试中原始数据从四面八方流向OLTP数据库,在这里这些数据会保留一段时间。在TPC-H测试中,决策支持数据库(DSS)定期进行更新操作,它里面的内容被各式各样的决策者查询使用。
1.2 数据库实体,关系和特性
TPC-H数据库的组成被定义为由八个单独的表(基本表)组成。这些表的列与列之间的关系举例如图2:TPC-H模式
图2:TPC-H模式
8
图例:
·每个表名后面的括号内为这个表的列名的前缀; ·箭头指出表与表之间的一对多的关系;
·每个表名下方的数字或公式表示表的行数。一些是SF(Scale Factor)中的因子,用来获得数据库的大小。在LINEITEM表中的行数是近似值(详见4.2.5)。
1.3 数据类型定义
1.3.1 下列数据类型将应用于每个表的列的清单中: ·Identifier
注释:一个默认的数据类型是整形。然而在SF大于300时,一些值将超出所支持的4个字节的整数。用户必须使用一些其他的数据类型比如8个字节的整数、小数或者字符串类型来实现。
·Integer意思是必须为整数(比如值的增长为1),取值范围为-2,147,483,646到2,147,483,647。
·Decimal意思是必须能够描述取值范围从-9,999,999,999.99到+9,999,999,999.99内、数值增长为0.01的所有有理数。
·Big Decimal是扩展的Decimal数据类型,它具有的附加特性是它必须足够大以至于能够描述存放在临时表中创建的查询变量的总数。
·Fixed Text,size N是用来存储一个固定长度为N的字符串类型。
注释:如果字符串本身小于长度N,那么剩余的空间必须被存储在数据库中,或者数据库自动加上一些空间使得CHAR_LENGTH()函数的返回值为N。
·Variable text, size N是该列可以存储变量长度最长为N的字符串变量。被定义为“Variable text, size N”的列可以和定义为“fixed text, size N”一样执行。
9
·Date是一个可以被描述为YYYY-MM-DD的值,它所有的字符均为数字。一个日期必须能够描述连续的14年里的每一天,但是对日期的内部描述没有特殊的要求。
注释:用户在选择数据类型时,申请的详细的数据类型定义必须由所有定义在模式中的数据类型的情况组成,除了标识列,它必须满足数据库缩放比例的要求。
1.3.2 在这篇文档中使用的SF标记是用来描述数据库的比例因子的(详见条款4)。
1.4 表的规划
以下的列表定义了每个表所需要的结构(列的清单)。主键的注释及外键引用仅仅只是为了说明,而不是指定实现要求,例如完整性约束。
PART表的规划
列名 数据类型需求 P_PARTKEY identifier SF*200,000 P_NAME variable text, size 55 P_MFGR fixed text, size 25 P_BRAND fixed text, size 10 P_TYPE variable text, size 25 P_SIZE integer
P_CONTAINER fixed text, size 10 P_RETAILPRICE decimal
P_COMMENT variable text, size 23 主键: P_PARTKEY
SUPPLIER表的规划:
列名 数据类型需求 S_SUPPKEY identifier SF*10,000 S_NAME fixed text, size 25 S_ADDRESS variable text, size 40
S_NATIONKEY identifier S_PHONE fixed text, size 15 S_ACCTBAL decimal
S_COMMENT variable text, size 101 主键: S_SUPPKEY
PARTSUPP表的规划
列名 数据类型需求 PS_PARTKEY identifier PS_SUPPKEY identifier PS_AVAILQTY integer PS_SUPPLYCOST decimal
PS_COMMENT variable text, size 199 主键: PS_PARTKEY, PS_SUPPKEY
CUSTOMER表的规划
列名 数据类型需求 注释
注释
外键引用N_NATIONKEY 注释
外键引用P_PARTKEY 外键引用S_SUPPKEY 注释
10