【TPC-H】测试知识点总结(重要)

学习的资料

最新版本下载:https://www.tpc.org/tpc_documents_current_versions/current_specifications5.asp

还待验证:https://cloud.tencent.com/developer/article/1344308

2.0版本的标准中文版解读官方文档:https://max.book118.com/html/2018/0716/8016002101001115.shtm

介绍TPC-H:https://blog.csdn.net/woshisap/article/details/44427899

 

生成数据

   进入 tpch-tool/dbgen中执行如下命名

time ./dbgen -s 200 -f     生成的数据后显示耗费的时间(注:【time】记录生成200GB数据的耗费时间,【f】展示详细信息)

./dbgen -vf -s 1         生成1G的数据

./dbgen -v -U 1         生成1G数据量的RF内容

查询与建表SQL

默认query语句存放的路径:tpch-tool/dbgen/queries。

创建8表的SQL:/tpch-kit/dbgen/dss.ddl。dss.ri是table外键约束生成文件

(注)如果在queries文件夹下无22条SQL,则用下面方法自动生成22条查询SQL

$ cd queries/
$ for i in {1..22}; do ../qgen $i > query-$i.sql; done

 

测试策略

1. linux上搭建minio的环境,minio的安装目录下新建data/tpc-h-100g,将TPC-H生成的测试数据(nation.tbl)直接复制到minio新建的目录下即可

2. 通过外表导入的方式从minio中的数据导入到AtomData中

a. 创建的表oss_customer与TPC-H中的表customer表字段、表结构与类型均保持一致

CREATE TABLE IF NOT EXISTS tpc-100g.oss_customer

(

    uid string,

    other string

)

ENGINE='OSS'

TABLE_PROPERTIES='{

    "endpoint":"192.168.20.112:9000",

    "url":"oss://test/adb/oss_import_test_data.txt",

    "accessid":"LTAIF****5FsE",

    "accesskey":"Ccw****iWjv",

    "delimiter":";"

}';

1. 再次通过insert into的方式将数据从oss_customer写入到AtomData的customer表(注意,minio创建的映射表oss_customer会多出一列tmp,因此insert时需要手动写出每个列)

insert into REGION(R_REGIONKEY,R_NAME,R_COMMENT) select R_REGIONKEY,R_NAME,R_COMMENT from OSS_REGION;

此时就可以计算写入性能的时间

 

测试注意点

Query15中有creat view和drop view,这部分可以单独出来写,query中只写query不涉及其他,view中的revenue0参数根据streamID变化,query中也注意此参数要修改

正式的查询测试开始前,先进行3次22条query的运行,将数据预热,把数据从磁盘写入到内存

RF1测试:测试的过程中可以执行:select count(1)from ORDERS;去查看数据是否写入成功,写入结束会生成记录表

RF2:测试的过程中无法通过select count(1)from ORDERS;去查看是否有删除成功表数据,只有等脚本运行结束才可以去看

知识点总结

TPC-H更适合OLTP类型的数据库,RF中包含的insert和delete更贴近于OLTP数据库的使用

LINEITEM与ORDERS的数据量占据了整体的83%

TPC-H测试的目的:减少在信息分析应用中出现操作的多样性

TPC-H测试模拟了:商用环境的分析端,其他TPC基准模拟的是商用环境的操作端

TPC-H不包含验证数据库的连续性。也没有特定的系统功能可以设置用来测试数据库的连续性。但是满足规范中描述的要求也能产生相应的测试结果

官方文档中给出了基数为1G的数据,后续的数据行数row=SF*1G的数据基础 

 RF1和RF2的测试

 

Refresh Function Definition 

注意事项:

需要手动写脚本,来处理RF1和RF2的数据

测试RF1之后注意校验insert的数据量是否正确,示例验证点:SF=100,则插入到orders表中的数据等于100*1500=150000行数据,同理验证lineitem表数据

官方给出的脚本如下

RF1:向ORDERS 与 LINEITEM表中insert新的数据

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

RF2:从ORDERS 与 LINEITEM表中delete旧的数据

LOOP (SF * 1500) TIMES 

DELETE FROM ORDERS WHERE O_ORDERKEY = [value] 

DELETE FROM LINEITEM WHERE L_ORDERKEY = [value] 

END LOOP

文档核心内容解析总结

一、商业和应用环境

1. 适应的行业:汽车租赁、食品销售、供应商

2. TPC查询语句的特征:

a. 非常复杂

b. 各种各样的访问模式

c. 带有随机特性

d. 检查可获得数据的大部分

e. 每个SQL互不相同

f. 含有查询参数并在执行时变化(注:某些给定的参数可以在query时修改不同的值)

3. 所有查询回答的商业问题

a. 定价和促销

b. 供货和需求管理

c. 利润和收入管理

d. 顾客满意度研究

e. 市场份额研究

f. 运输管理

4. 就按实际

posted @ 2022-05-09 16:59  Syw_文  阅读(411)  评论(0编辑  收藏  举报