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

时间:2022-12-20 13:56:54

学习的资料

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

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

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


 

生成数据

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

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

生成1G的数据

生成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

 

测试策略

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

minio中的数据导入到AtomData中

创建的表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":";"
}';

再次通过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;

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

 

测试注意点

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

3次22条query的运行,将数据预热,把数据从磁盘写入到内存

select count(1)from ORDERS;去查看数据是否写入成功,写入结束会生成记录表

select count(1)from ORDERS;去查看是否有删除成功表数据,只有等脚本运行结束才可以去看

知识点总结

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

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

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

TPC基准模拟的是商用环境的操作端

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

1G的数据,后续的数据行数row=SF*1G的数据基础

和RF2的测试

Refresh Function Definition 

注意事项:

RF1和RF2的数据

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

官方给出的脚本如下

:向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

文档核心内容解析总结

一、商业和应用环境

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

TPC查询语句的特征:

非常复杂

各种各样的访问模式

带有随机特性

检查可获得数据的大部分

每个SQL互不相同

query时修改不同的值)

所有查询回答的商业问题

定价和促销

供货和需求管理

利润和收入管理

顾客满意度研究

市场份额研究

运输管理

就按实际

1.作者:Syw