tpch是TPC(Transaction Processing Performance Council)組織提供的工具包。用于進行OLAP測試,以評估商業分析中決策支持系統(DSS)的性能。它包含了一整套面向商業的ad-hoc查詢和并發數據修改,強調測試的是數據庫、平臺和I/O性能,關注查詢能力。
官網:http://www.tpc.org/tpch
下載地址:http://www.tpc.org/tpch/spec/tpch_2_14_3.tgz 或 http://www.tpc.org/tpch/spec/tpch_2_14_3.zip
1、編譯安裝
下載源碼包,解壓縮,然后:
cp makefile.suite makefile
修改makefile文件中的CC、DATABASE、MACHINE、WORKLOAD等定義:
################
## CHANGE NAME OF ANSI COMPILER HERE
################
CC = gcc
# Current values for DATABASE are: INFORMIX, DB2, ORACLE,
# SQLSERVER, SYBASE, TDAT (Teradata)
# 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
修改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編譯,編譯完畢后會生成兩個可執行文件:
dbgen:數據生成工具。在使用InfiniDB官方測試腳本進行測試時,需要用該工具生成tpch相關表數據。
qgen:SQL生成工具
生成初始化測試數據:
[root@imysql tpch]# time ./dbgen -s 50
TPC-H Population Generator (Version 2.9.0)
Copyright Transaction Processing Performance Council 1994 - 2008
real 192m43.897s
user 37m45.398s
sys 19m4.132s
[root@imysql tpch]# ls -lh *tbl
-rw-r--r-- 1 root root 1.2G Sep 21 15:23 customer.tbl
-rw-r--r-- 1 root root 1.4G Sep 21 15:23 lineitem.tbl
-rw-r--r-- 1 root root 2.2K Sep 21 15:23 nation.tbl
-rw-r--r-- 1 root root 317M Sep 21 15:23 orders.tbl
-rw-r--r-- 1 root root 504K Sep 21 15:23 partsupp.tbl
-rw-r--r-- 1 root root 464K Sep 21 15:23 part.tbl
-rw-r--r-- 1 root root 389 Sep 21 15:23 region.tbl
-rw-r--r-- 1 root root 69M Sep 21 15:23 supplier.tbl
dbgen參數 -s 的作用是指定生成測試數據的倉庫數,建議基準值設定在100以上,在我的測試環境中,一般都設定為1000。
由于源碼包中自帶的tpch初始化庫表腳本并不能完全適用MySQL,需要修改部分代碼。
先生成測試SQL腳本:
[root@imysql tpch]# ./qgen | sed -e 's//r//' > queries/tpch_queries.sql
而后用vim打開tpch_queries.sql腳本,進行下面幾次全局替換:
:%s/;/nlimit/ limit/g
:%s/limit -1/limit 1/g
搜索所有類似下面的語句,去掉后面的 (3):
l_shipdate <= date '1998-12-01' - interval '106' day (3)
=>
l_shipdate <= date '1998-12-01' - interval '106' day
再修改第369行附近:
count(o_orderkey)
=>
count(o_orderkey) as c_count
修改第376行左右
) as c_orders (c_custkey, c_count)
=>
) as c_orders
修改第431行附近:
drop view revenue0 limit 1;
=>
drop view revenue0;
最后把大的查詢SQL腳本拆分成23個獨立的SQL查詢腳本,分別從tpch_01.sql ~ tpch_23.sql。
2、初始化庫表
tpch提供的數據庫表初始化腳本有些小問題,需要進行修改:
dss.ddl
主站蜘蛛池模板:
平乐县|
阜阳市|
盐山县|
三台县|
巩义市|
阜平县|
株洲市|
正镶白旗|
福泉市|
民乐县|
西贡区|
金寨县|
仙游县|
泽州县|
大荔县|
德保县|
乳山市|
古蔺县|
崇仁县|
军事|
扎赉特旗|
宾阳县|
兴安盟|
阜新市|
贡嘎县|
曲沃县|
瑞丽市|
商都县|
阿图什市|
嘉善县|
江城|
静乐县|
蚌埠市|
五河县|
阳曲县|
丹江口市|
前郭尔|
利辛县|
大埔县|
东乌珠穆沁旗|
巫山县|