TPCH工具下载及用法

目录

1. 什么是TPCH?

2. 下载TPCH基准工具

3. 编译TPCH基准工具

3.1. 修改头文件

3.2. 修改编译文件

3.3. 执行编译

4. qgen 的用法

4.1. 异常处理

4.2 常见用法

5. dbgen 的用法

5.1. 语法说明

5.2. 常见用法

6. 总结


        

1. 什么是TPCH?

    TPC-H 是一个决策支持基准测试 (Decision Support Benchmark),用于模拟复杂的决策支持系统环境。主要测试数据库的查询和报表性能,通常用于评估数据库在处理大规模数据时的性能表现。

    TPC-H 基准测试由一组预定义的 SQL 查询组成,这些查询涉及大数据集上的多表连接、聚合等复杂操作。通过执行这些查询并测量其性能,可以评估数据库系统处理复杂决策支持工作负载的能力。

        

2. 下载TPCH基准工具

TPC官网

http://www.tpc.org/

GitHub 仓库(V 2.17.3)

https://github.com/gregrahn/tpch-kit

        

3. 编译TPCH基准工具

(这里以 GitHub 仓库下载的 2.17.3 版本为例)

3.1. 修改头文件

编辑项目定义的头文件 tpch-kit-master/dbgen/tpcd.h,不同的数据库使用不用的定义。文件中内置了一些数据库,比如 Oracle:

#ifdef ORACLE
......

根据自己需要使用的数据库配置,如果文件中已经包含了,那么不需要配置。如果没有可以参考下方,增加到文件中即可。

【Oracle定义】

#ifdef ORACLE
#define GEN_QUERY_PLAN ""
#define START_TRAN ""
#define END_TRAN ""
#define SET_OUTPUT ""
#define SET_ROWCOUNT "where rownum <= %d;\n"
#define SET_DBASE ""
#endif

【SQLServer定义】

#ifdef  SQLSERVER
#define GEN_QUERY_PLAN  "set showplan on\nset noexec on\ngo\n"
#define START_TRAN      "begin transaction\ngo\n"
#define END_TRAN        "commit transaction\ngo\n"
#define SET_OUTPUT      ""
#define SET_ROWCOUNT    "set rowcount %d\ngo\n\n"
#define SET_DBASE       "use %s\ngo\n"
#endif

【PostgreSQL定义】

#ifdef POSTGRESQL
#define GEN_QUERY_PLAN  "explain"
#define START_TRAN      "start transaction"
#define END_TRAN        "commit;"
#define SET_OUTPUT      ""
#define SET_ROWCOUNT    "limit %d;\n"
#define SET_DBASE       ""
#endif

【MySQL定义】

#ifdef MYSQL
#define GEN_QUERY_PLAN  ""
#define START_TRAN      "start transaction"
#define END_TRAN        "commit"
#define SET_OUTPUT      ""
#define SET_ROWCOUNT    "limit %d;\n"
#define SET_DBASE       "use %s;\n"
#endif

        

3.2. 修改编译文件

编辑编译文件 Makefile,找到如下内容按情况修改

################
## CHANGE NAME OF ANSI COMPILER HERE
################
CC      = gcc
# Current values for DATABASE are: INFORMIX, DB2, TDAT (Teradata)
#                                  SQLSERVER, SYBASE, ORACLE, VECTORWISE, POSTGRESQL
# Current values for MACHINE are:  ATT, DOS, HP, IBM, ICL, MVS, MACOS
#                                  SGI, SUN, U2200, VMS, LINUX, WIN32
# Current values for WORKLOAD are:  TPCH
DATABASE = MYSQL
MACHINE  = LINUX
WORKLOAD = TPCH
  • DATABASE 指定需要编译的数据库

        

3.3. 执行编译

上述2个文件配置完成后执行 make 命令

        

编译完成后会自动生成2个执行文件

TPCH主要利用这两个工具来生成业务SQL和业务数据 

  • qgen:生成复杂查询SQL
  • dbgen:生成测试数据

        

4. qgen 的用法

  • qgen 是一个用于生成 TPC-H Benchmark 测试查询的工具

4.1. 异常处理

直接执行 qgen 会出现找不到的错误:

在执行前设置变量

export DSS_QUERY=./queries

再次执行qgen(成功),生成22条复杂查询SQL

        

4.2 常见用法

常用参数

-h      # 帮助
-c      # 保留模板中的注释
-d <n>  # 指定输出单条SQL(1~22)

【案例一】生成全部SQL(22条)

./qgen
  • 直接执行就行

        

【案例二】指定生成第3条SQL

./qgen -d 3

        

【案例三】保留注释

./qgen -c -d 3

        

5. dbgen 的用法

  • dbgen 是一个用于生成 TPC-H Benchmark 测试数据的工具

5.1. 语法说明

-h     # 帮助
-q     # 启用静默模式
-v     # 启用详细模式

-f     # 覆盖现有文件
-s <n> # 比例因子,数据规模以GB为单位(默认: 1G)
-U <n> # 生成 <n> 更新设置

-T     # 指定生成某张表的数据
    -T c   # 只生成cutomers表数据
    -T l   # 只生成nation/region表数据
    -T L   # 只生成lineitem表数据
    -T n   # 只生成nation表数据
    -T o   # 只生成orders/lineitem表数据
    -T O   # 只生成orders表数据
    -T p   # 只生成parts/partsupp表数据
    -T P   # 只生成parts表数据
    -T r   # 只生成region表数据
    -T s   # 只生成suppliers表数据
    -T S   # 只生成partsupp表数据

        

5.2. 常见用法

【案例一】生成1GB数据

./dbgen
  • 直接执行 dbgen 默认生成1GB数据,这些数据由8张表组成,所以生成8个文件 

        

【案例二】生成2GB数据,覆盖原有文件,并输出详细信息

./dbgen -vfs 2
  • -v:输出详细信息
  • -f:覆盖原有数据
  • -s:比例因子(单位:GB) 

        

【案例三】指定生成customer和nation表数据

./dbgen -T c
./dbgen -T n

        

6. 总结

下载TPCH工具后解压,进入到 dbgen 目录下,此时包含2个文件:

  • dss.ddl:创建表
  • dss.ri:创建索引

语法是通用的,基本在每个数据库都能用。

解压后需要修改2个文件:

  • tpcd.h:查看是否包含需要编译数据库的定义,若没有添加到下方即可
  • Makefile:编译配置,根据提示配置对应信息就行

修改后直接 make 编译,编译完成后生成2个文件:

  • dbgen:生成测试数据
  • qgen:生成复杂查询SQL

先生成数据,将数据导入数据库后再生成业务SQL,根据实际场景构造业务即可。

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TPC-H 是一个用于测试和评估关系数据库管理系统(RDBMS)性能的基准测试套件。它模拟了一个典型的决策支持系统(Decision Support System,DSS)环境中的查询和数据操作。 要在 MySQL 上进行 TPC-H 测试,您需要按照以下步骤操作: 1. 下载 TPC-H 套件:从 TPC 官方网站(http://www.tpc.org/tpch/)上下载 TPC-H 套件。这个套件包含了一系列的 SQL 查询和数据生成工具。 2. 创建数据库:使用 MySQL 命令行或图形界面工具创建一个新的数据库,用于存储 TPC-H 数据。 3. 数据生成:使用 TPC-H 套件中的数据生成工具,根据指定的比例因子生成测试数据。比例因子表示生成数据的规模大小,例如,比例因子为 1 时表示生成 1 GB 的数据。 4. 数据导入:将生成的数据导入到 MySQL 数据库中。可以使用 MySQL 的 LOAD DATA INFILE 语句或其他工具来完成这个步骤。 5. 执行查询:使用 TPC-H 套件中的查询工具执行 TPC-H 测试中定义的查询。这些查询旨在模拟真实世界中的决策支持系统查询。 6. 性能评估:根据执行查询的时间和资源消耗等指标,对 MySQL 数据库的性能进行评估。可以使用 TPC-H 套件中的报告工具来生成性能报告。 请注意,执行 TPC-H 测试需要一定的数据库和系统管理经验,并且可能会对系统资源产生一定的负载。在进行测试之前,请确保您在适当的环境下进行,并备份您的数据以防止意外情况发生。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值