• 【TPCH】测试知识点总结(重要)


    学习的资料

    最新版本下载: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. 就按实际

  • 相关阅读:
    day23_2_logging
    day23_1-re模块之转义字符、分组、方法
    The Python Standard Library
    re.groups取出来的空元祖??
    Mybatis-学习笔记(2)Mybatis配置文件
    Mybatis-第N篇配置log4j1、log4j2打印执行的sql语句
    Java-数据库连接池第一篇
    Mybatis-学习笔记(1)SqlSessionFactory、SqlSession、Mybatis配置文件configuration的属性标签
    Spring MVC-学习笔记(5)spring MVC的文件上传、下载、拦截器
    Java-多线程第四篇线程池
  • 原文地址:https://www.cnblogs.com/syw20170419/p/16249884.html
Copyright © 2020-2023  润新知