首先从官网下载TPC-H_Tools_v2.18.0.zip,解压

1
$ unzip TPC-H_Tools_v2.18.0.zip

进入dbgen目录,拷贝Makefile

1
2
$ cd tpc/2.18.0_rc2/dbgen
$ cp makefile.suite Makefile

修改Makefile,主要修改如下

1
2
3
4
CC      = gcc
DATABASE = ORACLE
MACHINE = LINUX
WORKLOAD = TPCH

编译dbgen

1
$ make

./dbgen -h可以查看dbgen的用法

使用dbgen产生一些测试数据,-s表示scale(单位GB)

1
2
$ ./dbgen -s 50 -f
$ ll -h *.tbl

将测试数据转换为PostgreSQL能够识别的格式,并删除末尾的分隔符|

1
2
$ for i in `ls *.tbl`; do sed 's/|$//' $i > ${i/tbl/csv}; done
$ ll -h *.csv

创建软链接/tmp/dss-data指向包含csv文件的目录

1
$ ln -s `pwd` /tmp/dss-data

下载pg_tpch

1
$ git clone https://github.com/digoal/pg_tpch.git

将pg_tpch的文件逗拷贝到dbgen目录下面

1
$ cp -r ~/pg_tpch/* ~/tpc/2.18.0_rc2/dbgen

创建一个queries目录,用于存放转换后的TPC-H测试SQL

1
2
$ cd ~/tpc/2.18.0_rc2/dbgen
$ mkdir -p dss/queries

生成测试SQL,SF用于dbgen指定scale值

1
2
3
4
5
6
$ SF=50
$ for q in `seq 1 22`
do
    DSS_QUERY=dss/templates ./qgen -s $SF $q > dss/queries/$q.sql
    sed 's/^select/explain select/' dss/queries/$q.sql > dss/queries/$q.explain.sql
done

设置gpdb几个参数

1
2
3
$ gpconfig -c enable_nestloop -v off
$ gpconfig -c work_mem -v 256MB
$ gpstop -u

开始测试,结果输出到results目录

1
$ ./tpch.sh ./results tpch-db gpadmin

结束后,可以使用以下方法生成CSV报告

1
$ php process.php ./results output.csv