TPC-H 标准 中文版(4)

2019-01-19 17:06

直使用同样的标识数。

2.1.2.4 当一个查询功能定义包含表的创建时,列的数据类型说明使用符号。符号的定义参见1.3.1节。

2.1.2.5 在一个可执行查询文本中产生的任何实体都必须在这个可执行查询文本中删除。 2.1.2.6 一个逻辑表空间是一系列逻辑上邻近的、不可分割的物理存储设备的集合。 2.1.2.7 如果在查询过程中使用了CREATE TABLE语句,这些CREATE TABLE语句必须用一个表空间引用进行扩展(如,IN )。对每一个表,必须使用唯一的表空间。

注释:表空间仅仅应用于包含CREATE TABLE语句的变量。

2.1.2.8 在查询执行过程中创建的所有表必须满足第3章定义的ACID特性。

2.1.2.9 查询2,3,10,18和21要求返回给定的行数(如”Return the first 10 selected rows”)。如果N是要返回的行数,当符合条件的行数不小于N时,查询必须精确返回前N行;如果符合条件的行数小于N,则返回所有的行。有三种方法满足这种要求。一个测试发起者必须采用其中的一种方法,利用该方法来处理所有要求返回指定行数的查询。

1.被测试发起者的交互式SQL界面支持的厂商特有的控制语句(如 SET ROWCOUNT n)可以用来限制返回的行数。

2.被具体实现层(见6.2.4)识别、用于控制一个获得行的循环的控制语句可以用来限制返回的行数(如,while rowcount<=n)。

3.把厂商特定SQL语法加入SELECT语句可以限制返回的行数(如,SELECT FIRST n)。这种语法不被认为是微小的查询更改,因为它完成了查询函数定义的功能要求。没有已经定义的标准语法。在其它方面,查询必须满足2.2节的要求。语法必须能够单独处理结果集,并且不能产生任何附加的对表、索引或访问路径的显式引用。 2.1.3 替换参数和输出数据

2.1.3.1 每个查询有一个或多个替换参数。当产生可执行查询文本时,每个替换参数都必须用一个值来代替。这些值必须被用来完成可执行查询文本。这些替换参数的名字用大写字母表示,并且用中括号括起来。例如,在Pricing Summary Report Query中(见2.4节),替换参数[DELTA]在查询功能定义的每一次出现都必须用为DELTA所产生的值来代替,以便完成可执行查询文本。 注释1:当日期是替换参数的一部分时,它们必须用年、月、日来表示,例如,YYYY-MM-DD。年、月、日之间的分隔符没有明确的规定。其它的日期表达方式是不允许的,例如,用1970-01-01以后的天数来表示。

注释2:当一个替换参数在一个查询中出现多次时,为这个替换参数产生唯一的值,它的每一次出现都用同一个值来替换。

注释3:产生可执行查询文本也可能包括附加的文本替换(见2.1.2.3节)。

2.1.3.2 术语“随机选择”应用于替换参数的定义中,意思是从指定的值的范围或列表中随机选择。

2.1.3.3 用来产生替换参数的随机数产生器必须用下面的方法产生种子:

初始种子(seed0)是数据库加载结束时的时间戳,用mmddhhmmss来表示,其中mm代表月,dd代表日,hh代表小时,mm代表分钟,ss代表秒。这个种子用来进行第一次运行的功率测试。以后的种子(用来进行吞吐量测试)这样来选择:seed0+1, seed0+2,?, seed0+s,其中s是指厂商选择的流的数目。这个过程产生具有s个流的测试程序的第一次运行所需要的s+1个种子。第二次运行的种子可以和第一次运行的种子相同(见5.3.2节)。然而,如果测试发起者决定第二次运行使用与第一次运行不同的种子,那么测试发起者必须使用一个与第一次运行类似的选择过程。种子必须是下面的形式:seed0,seed0+1, seed0+2,??, seed0+s,其中seed0是第一次运行结束的时间戳,表示方式与前面相同。

16

注释1:这一节的目的是防止由于多个流使用相同的种子或者使用由一个定义好的种子选择方法所产生的预先知道的种子而导致的性能优势。

注释2:QGEN是TPC(见2.1.4节)提供的产生可执行查询文本的一种工具。如果用一个发起者提供的工具来代替QGEN,它的种子的行为必须满足这一节所讲的,它的代码必须公布出来。执行完后,查询返回一行或多行。返回的行称为输出数据,它们或者是数据库中的行,或者是由数据库中的数据重新组成的行。

2.1.3.4 查询的输出数据应该用一种即使一个计算机初学者也能容易理解的格式来表示。特别地,在查询确认(见2.3节)中,我们已经预知了查询结果,为了能够使真正的输出数据与预知的输出数据进行比较,输出数据的格式必须遵循下面的原则:

a) 列按照查询函数定义或者经过核准的变量的SELECT语句所指定的顺序出现。列名

可以选择。

b) 包含价格的非整数表达式用小数来表示,小数点后至少有两位。 c) 整数不包含前导0。

d) 日期用年、月、日来表示,其中,年、月、日都是整数,如YYYY-MM-DD。年、月、

日之间的分隔符没有明确指定。其它的日期表达方式是不允许的,如用1970-01-01之后的天数来表示。

e) 字符串区分大小写;字符串的前面或后面可以有空格。 f) 列之间的空白区域的大小没有指定。

2.1.3.5 查询确认的输出数据中包含的数值的精确度必须符合下面的原则:

a) 对于单一的列值和有COUNT运算得到的结果,其值必须与查询确认的输出数据精确

匹配。

b) 对于比值,结果必须在查询确认的输出数据的1%以内。

c) 对于由SUM运算得到的结果,其值必须在查询确认的输出数据的1%以内。 d) 对于由AVG运算得到的结果,其值必须在查询确认的输出数据的1%以内。 2.1.4 QGEN程序

2.1.4.1 可执行查询文本必须按照2.1.2节和2.1.3节的要求来产生。附录D中提供的QGEN的源代码是一个可执行查询文本产生器的具体实现的例子。它是用ANSI ‘C’编写的,已经被应用到许多平台。如果使用QGEN,它的版本必须与标准说明书中的版本相一致。 注释1:强烈推荐使用QGEN。我们需要精确的查询结果集。如果没有替换参数和文本标记被产生并且被统一地结合到QGEN的输出,这是不可能的。

注释2:在这一节的替换参数定义中使用的数字对应于QGEN中产生这些替换参数的值时使用的数字。

2.2 查询一致性

2.2.1 查询必须用可获得的SQL语言的一种商业实现版本来表示。由于最新的ISO SQL标准(目前是ISO/IEC 9075:1992)还没有被大多数商家完全实现,又由于ISO SQL语言在继续发展,TPC-H标准说明书有许多地方偏离了第2章所讲的标准的查询功能定义。 2.2.2 有两种偏离查询函数定义的方式是允许的:

a) 微小的查询修正; b) 核准的查询变量。 2.2.3 微小的查询修正

2.2.3.1 SQL语言的实现需要按照操作环境进行适当的调整,也需要SQL语言的语法变化。因此,微小的查询修正是允许的。微小的查询修正处于2.2.3.3所讲的范围。它们不要求核准。超出2.2.3.3所讲的范围的修正如果不是一个核准的查询变量的完整部分,就不是微小

17

的。

注释1:这一节的目的是允许微小的查询修正的使用。这些查询修正被称为是微小的,主要基于这样一种假设:它们没有显著地影响查询的性能。

注释2:唯一的例外是要求返回指定行数的查询。2.1.2.9节给出了处理这一例外的要求。

2.2.3.2 通过更改查询功能定义或一个核准的变量,微小的查询修正能被用来产生可执行查询文本。

2.2.3.3 下面的查询更改是微小的:

a)表名――CREATE TABLE、CREATE VIEW、DROP VIEW和FROM语句中的表名和视图名可以被更改以反映被测试系统的命名习惯。

b)select表达式的别名――对于包含别名定义的查询,可以用厂商具体语法来代替SQL-92语法。替换语法必须有等价的语义行为。可接受的实现的例子包含”TITLE ”或者”WITH HEADING ”。Select表达式别名的使用是可选择的。

c)日期表达式――对于包含有操纵日期的表达式的查询,可以用厂商具体语法来代替SQL-92语法。替换语法必须有等价的语义行为。可接受的实现的例子用”YEAR ()”来从日期列中抽取出年,或者用”DATE ()+3 MONTHS”来给一个日期增加3个月。

d)GROUP BY 和ORDER BY――对于对一个视图、嵌套的表表达式或者查询结果表进行分组或排序的查询,商家可以用对GROUP BY 和ORDER BY子句的SQL扩展来代替视图、嵌套的表表达式或者查询结果表的别名。可接受的实现的例子包括”GROUP BY ”、” GROUP BY ”、”ORDER BY ”和” ORDER BY ”。

e)命令分隔符――为了标识查询的结束和请求执行,在可执行查询文本的末尾必须插入附加的语法记号。这样的命令分隔符可以是分号或单词“GO”。

f)输出格式函数――用来影响输出格式或中间运算结果精度的标量函数可以应用于查询结果集。

g)事务控制语句――CREATE/DROP TABLE 或者 CREATE/DROP VIEW语句后面可以跟着一个COMMIT WORK语句或等价的卖者具体事务控制语句。

h)相关名字――表的别名可以添加到可执行查询文本中。表的别名之前的关键字”AS”可以省略。

i)显示的ASC――在ORDER BY 子句中,ASC可以显示地附加给列。

j)可以用符合2.1.2.6节的要求的表空间引用来扩展CREATE TABLE语句。

k)在一个给定的实现中,在标识符的名字与SQL-92的保留字冲突的情况下,定界标识符可能被使用。

l)关系操作符――查询中使用的关系操作符,如”<”、”>”、”<>”、”<=”和”=”,可以用等价的厂商具体操作符来代替,如”.LT” 、“.GT”、 “!=”、 “.LE”和 “==”。

m)嵌套的表表达式的别名――对于包含嵌套的表表达式的查询,表的别名之前的嵌套关键字”AS”可以省略。

n)如果一种实现正在使用包含视图的变量,并且这种实现仅仅支持”DROP RESTRICT”语义,那么对视图而言,可能要添加附加的DROP语句。

o)统计值可能超出整数的值的范围。统计函数AVG和COUNT可以用等价的厂商具体函数代替以便处理扩展的值的范围(如AVG_BIG和COUNT_BIG)。

p)子串标量函数――对于使用标量函数SUBSTRING()的查询,厂商具体语法可以代替SQL 92语法。替代语法必须有等价的语义行为。例如,”SUBSTRING(C_PHONE,1,2)”。

q)外连接――对于外连接查询,厂商具体语法可以代替SQL 92语法。替代语法必须有等价的语义行为。例如,连接表达式” CUSTOMER LEFT OUTER JOIN ORDERS ON C_CUSTKEY =

18

O_CUSTKEY”可以这样被替换:添加CUSTOMER和ORDERS到from子句,并且添加一个连接谓词(如C_CUSTKEY *= O_CUSTKEY)。

2.2.3.4 对查询功能定义或者核准的变量的微小查询修正的应用必须在查询集合中是一致的。例如,如果一个特别的厂商具体日期表达式或表名在一个查询中被使用,那么在所有其它的包含日期表达式或表名的查询中也必须被使用。

2.2.3.5 使用微小的查询更改来得到可执行查询文本必须被公布和被证明是合理的(见8.3.3.4节)。

2.2.4正确的查询变型

2.2.4.1在运用查询变型产生一致的TPC-H结果之前,证明新的查询变型的正确性是必须的。证明过程根据条款2.2.4.3中定义的要求。

2.2.4.2已经证明的查询变型列在此规格的附录B中。

注释:因为每次一个新的变型被证明后,附录B都会更新,所以测试者在实施基准之前都要具有最新版本的附录。

2.2.4.3一个实现中每个查询的可执行查询文本必须是来自于函数功能定义(见条款2),或者是一个被证明的查询变型(见附录B)。除了在条款2.2.3.3中特别允许的之外,可执行查询文本必须完全按TPC-H规范来运用。如果新的查询变型满足以下的一条,就需要考虑证明: a) 即使根据条款2.2.3对查询实施小而恰当的改动后,运用查询定义或是被证明正确的变型,也不能在认证的数据库上成功运行可执行查询文本。

b)变型包含新的或更高级的与基准有关的SQL语法,这是新的ISO SQL标准起草委员会定义的。

c)变型包含被提议的语法,这使变型更接近ISO SQL标准。

d)变型包含小的语法差异,这使其直接向在查询功能定义中使用的ISO SQL语法发展,使函数功能在实质上更接近ISO SQL标准。

2.2.4.4为了被证明正确,所提出的变型应该具有以下性质。下面这些性质并不是所有的都特别需要。变型满足的被每一条所提出的每一个性质的积累将是证明的决定因素。

a) 变型只是一个追求函数兼容而不要求性能改进的语法; b) 变型很小,而且只是用来更正一个缺少的功能;

c) 变型只是依靠商业问题知识,而不是测试系统(SUT)或测试数据库中特殊数据值

的知识;

d) 在不同的用户中,变型有广泛的应用; e) 变型是非过程性的;

f) 变型是SQL-92标准[ISO/IEC 9075:1992]在查询功能定义中应用; g) 变型能够被厂商实现并打算在未来基准的应用中的使用;

2.2.4.5 提交的用以证明的变型将和他们为什么能够或是不能够证明的原因一起被记载下来。

2.2.4.6 附录B中的查询变型用查询功能定义的习惯来定义(见条款2.1.2.3到条款2.1.2.6)。

2.2.5编码风格

实现者可以用以下风格编写可执行查询文本的代码,包括: a) 额外的断行,tab键和空格键 b) 选择大小写文本

所用的编码风格必须不会对测试下的系统行为产生影响,且要对整个查询集一致的实施。要揭露出与条款2中函数查询定义不同的查询风格。

19

注释:这不排除作者证实编程风格不会影响实现。

2.3 查询确认

2.3.1为了验证可执行查询文本,测试者必须执行以下确认测试,并在测试报告中记录完整的结果:

1. 确认数据库建立得必须和测试数据库在风格上完全一样(见条款4.1.2)。 2. 查询确认测试运行时必须运用确认数据库,并且确认数据库没有被任何更新行为

更改(例如,RF1,RF2,ACID事务执行)

3. 所用的查询文本(见条款2.1.3)必须和性能测试所用的一样。为每个查询提供的

默认替代参数必须被使用。更新函数RF1,RF2没有被执行。

4. 在测试数据库中执行查询用到的相同的驱动程序和实现特殊层必须被用以证明确

认数据库的有效性。

5. 输出结果必须和专有查询确认的输出数据一致(见附录C)。这个输出的子集可以

作为每个查询定义的一部分被找到。

6. 在得到的输出数据和查询确认输出之间的任何差别都必须满足条款2.1.3.5的要

求。

在确认数据库中运行时, 如果查询的输出和查询确认输出之间的差异超过了条款2.1. 3.5所允许的程度,那这个查询是不适应的。 注释:确认测试提供了适应性确信的最低水平。审计员可能要求另外的确认,即查询文本的执行和基准要求保持一致。

2.3.2 在被测系统中(例如,系统参数,如在条款5.2.7中列举的软件的环境特征,硬件设置,软件版本等),不能够存在与这个适应性示范和性能测试不同的方面。

注释:当确认测试的意图是不更改硬件设置被执行时,只要这个更改对适应性示范的结果没有影响,那么在另外的磁盘上建立资格数据库是允许的。

2.4 价格摘要报告查询(Q1)

这个查询报告已经付款的、已运送的和返回的生意的数量。 2.4.1 商业问题

价格摘要报告查询提供了给定日期的运送的所有行的价格摘要报告,这个日期在数据库包含的最大的运送日期的60-120天以内。查询列出了扩展价格、打折的扩展价格、打折的扩展价格加税收、平均数量、平均扩展价格和平均折扣的总和。这些统计值根据RETURNFLAG 和LINESTATUS进行分组,并按照RETURNFLAG 和LINESTATUS的升序排列。每一组都给出所包含的行数。

2.4.2 查询功能定义 select

l_returnflag, l_linestatus,

sum(l_quantity) as sum_qty,

sum(l_extendedprice) as sum_base_price,

sum(l_extendedprice*(1-l_discount)) as sum_disc_price,

sum(l_extendedprice*(1-l_discount)*(1+l_tax)) as sum_charge, avg(l_quantity) as avg_qty,

avg(l_extendedprice) as avg_price,

avg(l_discount) as avg_disc,

20


TPC-H 标准 中文版(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2017高考语文真题之诗歌鉴赏专题(DOC)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: