利用TPC-H为MYSQL生成数据
导言
这篇文章是看了joyee写的TPC-H数据导入MySQL教程以及另一篇网上的MySQL TPCH测试工具简要手册 后写的,有些内容是完全转载自以上两篇文章的,这里我写这篇文章主要写下自己的归纳和更改。
TPC-H简介
TCP-H是一个决策支持的测试基准,由一系列面向商务应用的查询和并发数据修改组成,其选择的查询和组成数据库的数据在商业上都具有广泛的代表性并且易于实现。该基准描述了决策支持系统的三个方面:分析大量的数据,执行高复杂度的查询,回答关键的商业问题。
我主要是想用TPC-H生成数据库样本,用于进行数据库实验。但是TPC-H是不支持为MYSQL生成数据的,所以我们需要对它的配置文件进行一些“魔改”。
TPC-H的安装包可以从官网免费获取。
过程
1、解压和编译
解压tpch文件,进入dbgen目录。
首先,我们需要更改TPC-H编译文件,
cp makefile.suite makefile
接着修改makefile文件
将103~112行改成以下:
CC = gcc
# Current values for DATABASE are: INFORMIX, DB2, TDAT (Teradata)
# SQLSERVER, SYBASE, ORACLE, VECTORWISE
# Current values for MACHINE are: ATT, DOS, HP, IBM, ICL, MVS,
# SGI, SUN, U2200, VMS, LINUX, WIN32
# Current values for WORKLOAD are: TPCH
DATABASE = MYSQL
MACHINE = LINUX
WORKLOAD = TPCH
第一行的意思是设定C语言编译器为gcc。
我们从这里也看到,DATABASE其实是没有MYSQL选项的,所以,我们后面需要为MYSQL添加依赖。
修改tpcd.h
在文件末尾加上
#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
修改完编译配置文件,我们可以编译出程序。
命令行执行make
这个过程中会有一些关于数据类型的警告,无视它。
make完dbgen目录下之后就会多出很多.o 文件,dbgen、qgen可执行程序,dss.ri,dss.dll文件。
2.生成数据
dbgen:数据生成工具。可以用该工具生成tpch相关表数据。
我们使用