亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MySQL > 正文

MySQL-tpch 測試工具簡要手冊

2024-07-24 13:09:37
字體:
來源:轉載
供稿:網友

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 – DSS庫初始化DDL腳本
dss.ri  – DSS數據表創建索引、外鍵腳本
dss.ddl腳本需要增加幾行:
drop database tpch;
create database tpch;
use tpch;

dss.ri腳本需要修改幾個地方:
修改第4行左右:
CONNECT TO TPCD;
=>
Use tpch;

修改第6~13行,所有的SQL注釋符 “--” 后面再加一個空格:
-- ALTER TABLE TPCD.REGION DROP PRIMARY KEY;                                                                                       
-- ALTER TABLE TPCD.NATION DROP PRIMARY KEY;                                                                                       
-- ALTER TABLE TPCD.PART DROP PRIMARY KEY;                                                                                         
-- ALTER TABLE TPCD.SUPPLIER DROP PRIMARY KEY;                                                                                     
-- ALTER TABLE TPCD.PARTSUPP DROP PRIMARY KEY;                                                                                     
-- ALTER TABLE TPCD.ORDERS DROP PRIMARY KEY;                                                                                       
-- ALTER TABLE TPCD.LINEITEM DROP PRIMARY KEY;                                                                                     
-- ALTER TABLE TPCD.CUSTOMER DROP PRIMARY KEY;

修改第25行:
ADD FOREIGN KEY NATION_FK1 (N_REGIONKEY) references TPCD.REGION;
=>
ADD FOREIGN KEY NATION_FK1 (N_REGIONKEY) references TPCD.REGION(R_REGIONKEY);

修改第40行:
ADD FOREIGN KEY SUPPLIER_FK1 (S_NATIONKEY) references TPCD.NATION;
=>
ADD FOREIGN KEY SUPPLIER_FK1 (S_NATIONKEY) references TPCD.NATION(N_NATIONKEY);

修改第55行:
ADD FOREIGN KEY CUSTOMER_FK1 (C_NATIONKEY) references TPCD.NATION;
=>
ADD FOREIGN KEY CUSTOMER_FK1 (C_NATIONKEY) references TPCD.NATION(N_NATIONKEY);

修改第73行:
ADD FOREIGN KEY PARTSUPP_FK1 (PS_SUPPKEY) references TPCD.SUPPLIER;
=>
ADD FOREIGN KEY PARTSUPP_FK1 (PS_SUPPKEY) references TPCD.SUPPLIER(S_SUPPKEY);

修改第78行:
ADD FOREIGN KEY PARTSUPP_FK2 (PS_PARTKEY) references TPCD.PART;
=>
ADD FOREIGN KEY PARTSUPP_FK2 (PS_PARTKEY) references TPCD.PART(P_PARTKEY);

修改第84行:
ADD FOREIGN KEY ORDERS_FK1 (O_CUSTKEY) references TPCD.CUSTOMER;
=>
ADD FOREIGN KEY ORDERS_FK1 (O_CUSTKEY) references TPCD.CUSTOMER(C_CUSTKEY);

修改第90行:
ADD FOREIGN KEY LINEITEM_FK1 (L_ORDERKEY)  references TPCD.ORDERS;
=>
ADD FOREIGN KEY LINEITEM_FK1 (L_ORDERKEY)  references TPCD.ORDERS(O_ORDERKEY);

修改第96行:
TPCD.PARTSUPP;
=>
TPCD.PARTSUPP(PS_PARTKEY,PS_SUPPKEY);

另外,由于tpch生成的表名是大寫的,需要修改下表名成小寫的,因此再增加幾行:
use tpch;

alter table CUSTOMER rename to customer ;
alter table LINEITEM rename to lineitem ;
alter table NATION rename to nation   ;
alter table ORDERS rename to orders   ;
alter table PART rename to part     ;
alter table PARTSUPP rename to partsupp ;
alter table REGION rename to region   ;
alter table SUPPLIER rename to supplier ;

3、導入數據
測試數據生成了,測試庫表也初始化完了,接下來就可以開始導入數據了。
需要注意下,如果開啟了binlog,在導入前最好先關閉binlog,否則會提示超出max_binlog_cache_size的錯誤提示,如果不能關閉binlog,則需要把導入文件切分成多個小文件再導入。
myqsl -e "LOAD DATA INFILE 'path/dbgen/customer.tbl' INTO TABLE CUSTOMER FIELDS TERMINATED BY '|';"
myqsl -e "LOAD DATA INFILE 'path/dbgen/orders.tbl'   INTO TABLE ORDERS   FIELDS TERMINATED BY '|';"
myqsl -e "LOAD DATA INFILE 'path/dbgen/lineitem.tbl' INTO TABLE LINEITEM FIELDS TERMINATED BY '|';"
myqsl -e "LOAD DATA INFILE 'path/dbgen/nation.tbl'   INTO TABLE NATION   FIELDS TERMINATED BY '|';"
myqsl -e "LOAD DATA INFILE 'path/dbgen/partsupp.tbl' INTO TABLE PARTSUPP FIELDS TERMINATED BY '|';"
myqsl -e "LOAD DATA INFILE 'path/dbgen/part.tbl'     INTO TABLE PART     FIELDS TERMINATED BY '|';"
myqsl -e "LOAD DATA INFILE 'path/dbgen/region.tbl'   INTO TABLE REGION   FIELDS TERMINATED BY '|';"
myqsl -e "LOAD DATA INFILE 'path/dbgen/supplier.tbl' INTO TABLE SUPPLIER FIELDS TERMINATED BY '|';"

4、執行tpch測試
接下來就可以進行tpch測試了,逐個執行23個查詢SQL腳本即可,每次執行前都要重啟下MySQL實例,確保每次的內存緩沖區都是干凈的。
簡單循環測試腳本如下:

#!/bin/sh#### 執行tpch OLAP測試#### writed by yejr(http://imysql.com), 2012/12/14##PATH=$PATH:/usr/local/binexport PATH. ~/.bash_profile > /dev/null 2>&1exec 3>&1 4>&2 1>> tpch-benchmark-olap-`date +'%Y%m%d%H%M%S'`.log 2>&1I=1II=3while [ $I -le $II ]doN=1T=23while [ $N -lt $T ]do if [ $N -lt 10 ] ; then  NN='0'$N else  NN=$N fi echo "query $NN starting" /etc/init.d/mysql restart time mysql -f tpch < ./queries/tpch_${NN}.sql echo "query $NN ended!" N=`expr $N + 1`done I=`expr $I + 1`Done
 

注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美性视频精品| 国产这里只有精品| 国产精品美女午夜av| 国产精自产拍久久久久久蜜| 成人动漫网站在线观看| 91丨九色丨国产在线| 亚洲欧美日韩精品久久亚洲区| 亚洲精品免费一区二区三区| 97香蕉超级碰碰久久免费的优势| 中文在线资源观看视频网站免费不卡| 国产精品视频区| 国产精品日韩一区| 孩xxxx性bbbb欧美| 国产aⅴ夜夜欢一区二区三区| 国产91色在线|免| 国产一区二区三区日韩欧美| 亚洲精品xxxx| 国产精品男女猛烈高潮激情| 97久久精品在线| 国产精品91免费在线| 欧美日韩国产成人高清视频| 久久综合国产精品台湾中文娱乐网| 91中文在线观看| 久久精品国产成人精品| 欧美极品少妇xxxxⅹ免费视频| 日韩人体视频一二区| 精品亚洲一区二区三区在线播放| 亚洲视频自拍偷拍| 欧亚精品中文字幕| 97视频在线观看成人| 国内精品视频在线| 91在线观看免费| 中文字幕亚洲欧美日韩在线不卡| 精品久久久久久久久久国产| 国产精品狼人色视频一区| 国产热re99久久6国产精品| 91久久嫩草影院一区二区| 啊v视频在线一区二区三区| 色婷婷久久一区二区| 欧美高清videos高潮hd| 欧美激情综合色| 色综合视频一区中文字幕| 中文字幕在线观看亚洲| 欧美日韩国产页| 一区二区三欧美| 91国产精品91| 国产97在线观看| 日韩电视剧在线观看免费网站| 久久男人的天堂| 日韩暖暖在线视频| 久久人人看视频| 亚洲人成在线观| 亚洲激情久久久| 国产精品第一页在线| 日韩av电影手机在线观看| 日韩在线中文字| 久久精品久久久久电影| 美女扒开尿口让男人操亚洲视频网站| 亚洲第一av网站| 久久精品视频在线| 精品国产精品自拍| 日韩欧美aⅴ综合网站发布| 91国产视频在线| 亚洲欧美在线第一页| 一区国产精品视频| 人体精品一二三区| 亚洲女人天堂视频| 欧美大奶子在线| 亚洲欧美在线第一页| 91免费精品国偷自产在线| 成人a在线观看| 精品福利在线视频| 91久久久久久国产精品| 2020欧美日韩在线视频| 日韩电影大片中文字幕| 国产精品久久激情| 久久久免费观看| 国产精品视频中文字幕91| 国产精品免费在线免费| 精品国产鲁一鲁一区二区张丽| 国产精品美女免费| 国产精品极品美女粉嫩高清在线| 欧美性xxxxx极品娇小| 亚洲a成v人在线观看| 国产日产欧美a一级在线| 亚洲精品视频在线播放| 久久久久久999| 欧美色欧美亚洲高清在线视频| 欧美日韩国产在线播放| 亚洲va欧美va国产综合剧情| 国产精品吊钟奶在线| 日韩精品在线免费观看视频| 97视频免费观看| 91九色视频在线| 7m精品福利视频导航| 国产成人97精品免费看片| 国产精品久久二区| 久久黄色av网站| 国产精品男女猛烈高潮激情| 午夜精品一区二区三区在线视频| 中文字幕精品久久| 日本国产一区二区三区| 78m国产成人精品视频| 亚洲最大成人在线| 欧美国产第二页| 91久久久久久国产精品| 少妇av一区二区三区| 精品亚洲男同gayvideo网站| 日韩二区三区在线| 亚洲在线免费观看| 国产精品免费久久久| 这里只有精品视频在线| 在线观看国产欧美| 97超级碰碰人国产在线观看| 欧美人交a欧美精品| 国产91|九色| 日韩中文在线中文网在线观看| 4438全国成人免费| 在线播放国产一区二区三区| 国产精品美女在线观看| 国产精品久久久91| 欧美精品情趣视频| 国产精品久久久久9999| 国产免费一区视频观看免费| 欧美性视频在线| 久久久久久国产| 久久国产加勒比精品无码| 亚洲欧美精品在线| 亚洲奶大毛多的老太婆| 一区二区三区无码高清视频| 中文字幕欧美专区| 国产精品高潮视频| 日韩中文有码在线视频| 91免费国产视频| 欧美在线精品免播放器视频| 97在线观看视频| 欧美极品少妇xxxxx| 97超级碰在线看视频免费在线看| 久久视频精品在线| 亚洲激情视频网| 国产视频精品va久久久久久| 久久网福利资源网站| 国产精品网站视频| 1769国内精品视频在线播放| 亚洲欧美日韩另类| 按摩亚洲人久久| 亚洲国产精品va在看黑人| 欧美成年人视频网站欧美| 国产精品户外野外| 91精品国产色综合久久不卡98口| 欧美丰满少妇xxxx| 欧美电影在线免费观看网站| 国产精品久久久久77777| 欧美成人黄色小视频| 91久久久亚洲精品| 亚洲毛片在线观看| 97av在线影院| 久久久国产精品免费| 欧美性生活大片免费观看网址| 欧美成人精品在线播放| 在线观看视频亚洲| 欧美日韩国产va另类| 91在线视频一区| 国产免费观看久久黄|