本文简单记叙在Linux环境下通过TPC-H生成MySQL数据库测试数据的步骤,作为后续参考。
生成数据的量级如下,数据库需要300G左右空间。
表名 | 数据行数 | 量级 |
customer | 15000000 | 1.5千万 |
lineitem | 600037902 | 6亿 |
nation | 25 | |
orders | 150000000 | 1.5亿 |
part | 20000000 | 2千万 |
partsupp | 80000000 | 8千万 |
region | 5 | |
supplier | 1000000 | 1百万 |
1下载TPC-H:https://download.csdn.net/download/kkdelta/12390317
这个源文件针对mysql做了定制修改
修改1:makefile (如果是生成其它数据库类型的测试数据,请修改DATABASE= 对应数据库)
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
修改2:头文件添加了如下信息,默认没有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
2解压编译
#tar -xzvf
#进入tpch_2.18.0_rc2/dbgen 目录执行 make命令
3生成数据,生成100G测试数据,更多dbgen 参数请参照https://github.com/electrum/tpch-dbgen?spm=a2c4g.11186623.2.12.49503a21XMT2IL
nohup ./dbgen -f -s 100 >out.txt 2>&1 &
4导入数据
41. 创建数据库表结构语句
CREATE TABLE `customer` (
`C_CUSTKEY` int(11) NOT NULL,
`C_NAME` varchar(25) NOT NULL,
`C_ADDRESS` varchar(40) NOT NULL,
`C_NATIONKEY` int(11) NOT NULL,
`C_PHONE` varchar(15) NOT NULL,
`C_ACCTBAL` decimal(12,2) NOT NULL,
`C_MKTSEGMENT` varchar(10) NOT NULL,
`C_COMMENT` varchar(117) NOT NULL,
PRIMARY KEY (`C_CUSTKEY`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `lineitem` (
`L_ORDERKEY` bigint(20) NOT NULL,
`L_PARTKEY` int(11) NOT NULL,
`L_SUPPKEY` int(11) NOT NULL,
`L_LINENUMBER` bigint(20) NOT NULL,
`L_QUANTITY` decimal(12,2) NOT NULL,
`L_EXTENDEDPRICE` decimal(12,2) NOT NULL,
`L_DISCOUNT` decimal(12,2) NOT NULL,
`L_TAX` decimal(12,2) NOT NULL,
`L_RETURNFLAG` varchar(1) NOT NULL,
`L_LINESTATUS` varchar(1) NOT NULL,
`L_SHIPDATE` date NOT NULL,
`