学习的资料
• 最新版本下载: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
默认query语句存放的路径:tpch-tool/dbgen/queries
生成数据
进入 tpch-tool/dbgen中执行如下命名
• time ./dbgen -s 200 -f 生成的数据后显示耗费的时间(注:【time】记录生成200GB数据的耗费时间,【f】展示详细信息)
• ./dbgen -vf -s 1 生成1G的数据
• ./dbgen -v -U 1 生成1G数据量的RF内容
测试策略
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. 就按实际