[筆記] 大家一起來測試,benchmark起來(MySQL下的TPC-C,TPC-H,TPC-W)
前段時間在MySQL下做了些類基準測試,帖出小結。
其中遇到許多小問題,不知道有遺漏步驟沒,也還有些問題沒解決,希望大家討論討論,一起測試起來吧,嘿嘿~
環境:
ubuntu9.10
Server version: 5.1.37-1ubuntu5.4 (Ubuntu)
一、TPC-C(參考:http://samurai-mysql.blogspot.com/2009/03/settingup-dbt-2.html
Settingup DBT-2,需要掛代理,附1)
1)安裝MySQL及相關元件
略
2)下載DBT-2
http://osdldbt.sourceforge.net/
3)安裝所需要的perl包(可參考:
shell> sudo cpan Statistics:: Descriptive
shell> sudo cpan Test::Parser
shell> sudo cpan Test::Reporter
(參考資料:http://bbs.chinaunix.net/archiver/?tid-881542.html,
http://blog.csdn.net/yhb72/archive/2005/11/27/537667.aspx
http://bbs3.chinaunix.net/thread-1076095-2-1.html
4)編譯DBT-2
進入相應的DBT-2目錄
cd /home/liova/download/dbt2-0.40/
執行:
shell> sudo apt-get install build-essentials
shell> ./configure --with-mysql=/usr/local/mysql [options] && make
shell> sudo make install
5)生成所需要的資料庫記錄
shell> datagen -w 10 -d /var/tmp/dbt2 --mysql
-w 指定了資料倉庫的個數
-d 指定了生成的資料所在的目錄
7)ubuntu下需要生成一個臨時連線,因為mysqld.sock不在tmp目錄下(以後每次重啟系統都需要先執行這句,如果嫌麻煩,可以修改MySQL的配置檔案,把sock檔案生成到tmp目錄下)
ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock
6)把生成的記錄載入MySQL,在DBT-2目錄下執行
shell> sudo scripts/mysql/build_db.sh -w 3 -d dbt2 -f /var/tmp/dbt2 -s /tmp/mysql.sock -h localhost -u user -p password -e INNODB
-d 資料庫名
-f 之前生成的資料庫記錄所在的目錄
-u MySQL的使用者名稱
-p 相應使用者的密碼
7)設定環境變數
shell> export USE_PGPOOL=0
shell> export LD_LIBRARY_PATH=/usr/local/mysql/lib
8)執行DBT-2
shell> sudo scripts/run_workload.sh -c 16 -d 300 -n -w 10 -s 10 -u user -x password
-c 併發的執行緒數
-d 執行的時間(秒)
-n 無思考時間,作者說如果想看資料庫效能,請不要漏掉這個選項
-w 資料倉庫個數
-s 每個新執行緒開始前的延遲時間(微秒)
-u MySQL使用者名稱
-x MySQL相應使用者的密碼
-l MySQL TCP/IP埠號
-H MySQL主機名
輸出的結果在/home/liova/download/dbt2-0.40/scripts/output/ 對應的實驗目錄下的
如:/home/liova/download/dbt2-0.40/scripts/output/17/driver/results.out
二、TPC-H(參考:http://my2iu.blogspot.com/2009/0
... eries-on-mysql.html Running TPC-H Queries on MySQL,需要掛代理,附2;http://www.pilhokim.com/index.php?title=Project/EFIM/TPC-H
Project/EFIM/TPC-H By Pilho Kim)
1)下載TPC-H的程式碼,用來生成所需要的資料
http://www.tpc.org/tpch/spec/tpch_2_8_0.zip 或者
http://www.tpc.org/tpch/default.asp
右邊欄
兩版本略有不同
2)建立MySQL使用者、資料庫、及授權
mysql -u root -p
mysql> CREATE USER 'tpch'@'%' IDENTIFIED BY 'tpch';
mysql> CREATE DATABASE tpch;
mysql> GRANT ALL ON tpch.* to 'tpch'@'%';
mysql> USE tpch;
3)執行tpch目錄下的dss.ddl檔案,建立tpch資料庫中的表
mysql> \. tpch/gen/dss.ddl
4)然後在tpch檔案目錄下,把makefile複製並改名成makefile,接著修改makefile檔案
shell> cp makefile.suite makefile
shell> vim makefile
makefile中相應項後面填寫:
CC = gcc # Current values for DATABASE are: INFORMIX, DB2, TDAT (Teradata) # SQLSERVER, SYBASE # Current values
for MACHINE are: ATT, DOS, HP, IBM, ICL, MVS, # SGI, SUN, U2200, VMS, LINUX, WIN32 # Current values for WORKLOAD are: TPCH DATABASE= SQLSERVER MACHINE = LINUX WORKLOAD = TPCH
5)修改tpch.h檔案
修改其中的SQLSERVER段為:
#ifdef SQLSERVER
#define GEN_QUERY_PLAN "EXPLAIN;"
#define START_TRAN "START TRANSACTION;\n"
#define END_TRAN "COMMIT;\n"
#define SET_OUTPUT ""
#define SET_ROWCOUNT "limit %d;\n"
#define SET_DBASE "use %s;\n"
#endif
6)執行makefile
shell> make
7)生成需要用的資料
shell> ./dbgen -s 1
-s 資料規模因子,1為1G的資料量
8)修改tpch目錄下的dss.ri檔案
1.刪除 "CONNECT TO TPCD;"
2.刪除所有的 "TPCH."(注意有個點)
3.刪除所有的"COMMIT WORK;"(注意分號也要刪除)
9)登入MySQL,並載入之前生成的資料進MySQL
shell> mysql -u tpch -p
mysql> use tpch;
mysql> LOAD DATA LOCAL INFILE 'customer.tbl' INTO TABLE CUSTOMER FIELDS TERMINATED BY '|';
mysql> LOAD DATA LOCAL INFILE 'orders.tbl' INTO TABLE ORDERS FIELDS TERMINATED BY '|';
mysql> LOAD DATA LOCAL INFILE 'lineitem.tbl' INTO TABLE LINEITEM FIELDS TERMINATED BY '|';
mysql> LOAD DATA LOCAL INFILE 'nation.tbl' INTO TABLE NATION FIELDS TERMINATED BY '|';
mysql> LOAD DATA LOCAL INFILE 'partsupp.tbl' INTO TABLE PARTSUPP FIELDS TERMINATED BY '|';
mysql> LOAD DATA LOCAL INFILE 'part.tbl' INTO TABLE PART FIELDS TERMINATED BY '|';
mysql> LOAD DATA LOCAL INFILE 'region.tbl' INTO TABLE REGION FIELDS TERMINATED BY '|';
mysql> LOAD DATA LOCAL INFILE 'supplier.tbl' INTO TABLE SUPPLIER FIELDS TERMINATED BY '|';
10)執行tpch目錄下的dss.ri
mysql> \. dss.ri
11)由於查詢中使用的是小寫表名,而使用dss.ddl生成的表名是大寫的,所以轉換表名成小寫
mysql> alter table NATION rename nation;
mysql> alter table SUPPLIER rename supplier;
mysql> alter table REGION rename region;
mysql> alter table PARTSUPP rename partsupp;
mysql> alter table PART rename part;
mysql> alter table ORDERS rename orders;
mysql> alter table LINEITEM rename lineitem;
mysql> alter table CUSTOMER rename customer;
12)執行(最後這步有點錯誤,暫時沒找到解決的辦法,哪位老大解決了教我呀呀呀,thx~~)
cp dists.dss queries
cd queries
../qgen -c tpch -s 1 1
12)我所用的替代方法
在tpch目錄的queries子目錄下,新建檔案:Q1.sql,Q2.sql,…,Q21,sql,Q22.sql
在每個檔案中新增相應的查詢(http://www.pilhokim.com/index.ph
... C-H_default_queries,TPC-H的預設查詢,經過MySQL 5.1.23測試通過,附3)
13)登入MySQL,手動執行TPC-H的預設查詢
shell> mysql -u tpch -p
mysql> use tpch;
mysql> source /home/liova/download/tpch/queries/Q1.sql;
mysql> source /home/liova/download/tpch/queries/Q2.sql;
…
…
mysql> source /home/liova/download/tpch/queries/Q22.sql;
三、TPC-W
(相關文件:Installing and Getting TPC-W to run on Virtuoso-12.pdf By Ashish Gupta以及網站http://mitglied.multimania.de/jankiefer/tpcw/index.html,
TPC-W Java Implementation)
1)下載 TPC-W Java版 http://mitglied.multimania.de/jankiefer/tpcw/index.html
比較難下載,很經常下一半丟失連線,多試幾次,下完全的檔案tpcw-java-dist-1.0.zip大小為1.13M。
2)下載並安裝Tomcat(可參考http://deepfuture.廣告.com/blog/591885)
1.安裝jdk6
shell>sudo apt-get install sun-java6-jdk(用新得立軟體包安裝)
2.下載tomcat6
下載地址是:http://tomcat.apache.org/
本次安裝的是:apache-tomcat-6.0.18.tar.gz
3.安裝
將壓縮包拷貝到你自己想放的目錄下,這裡是/home/liova/download/tpcw/
shell>sudo cp apache-tomcat-6.0.18.tar.gz /home/liova/download/tpcw/
解壓檔案
shell>cd /home/liova/download/tpcw/
shell>sudo tar zxvf apache-tomcat-6.0.18.tar.gz
解壓完成後,會在 /home/liova/download/tpcw/ 下生成資料夾 apache-tomcat-6.0.18
在/usr/local 下建立軟連結,名字是tomcat6
shell>cd /usr/local
shell>sudo ln -s /home/liova/download/tpcw/apache-tomcat-6.0.18 tomcat6
測試tomcat是否能夠正常啟動
shell>sudo /usr/local/tomcat6/bin/startup.sh (這裡圖簡單沒有配置tomcat開機啟動,所以以後每次重啟都要先執行這條命令開啟tomcat)
開啟firefox,輸入http://localhost:8080/,如果正常訪問,則表示成功。
3)下載並安裝Apache Ant來編譯Java程式碼(可參考http://wangxc.廣告.com/blog/665521)
1.下載地址 Ant:
地址:http://ant.apache.org/
2.解壓ANT包
tar zxvf apache-ant-1.8.1-bin.tar.gz
3.將解壓的Ant檔案移動到/opt/ant目錄下
mv apache-ant-1.8.1 /opt/ant
4.修改配置檔案中的環境ANT_HOME
sudo vim /etc/profile
在檔案末尾新增如下,在umask前加上#
#umask 022
export JAVA_HOME=/usr/lib/jvm/java-6-sun
export MVN_HOME=/opt/maven
export ANT_HOME=/opt/ant
export PATH=$ANT_HOME/bin:$MVN_HOME/bin:$PATH:
4)安裝MySQL
略.
5)下載JDBC MySQL驅動
http://dev.mysql.com/downloads/connector/j/3.0.html
解壓後複製mysql-connector-java-3.0.15-ga-bin.jar到此路徑下(不存在則自己建立):/usr/local/tomcat/webapps/tpcw/WEB-INF/lib
6)下載servlet.jar
下完複製到此路徑下(不存在則自己建立):/usr/local/jakarta-tomcat-6/server/lib/servlet.jar
7)設定引數
1.根據自己的路徑在/etc/profile末尾新增:
export CLASSPATH=/usr/local/jakarta-tomcat-6/server/lib/servlet.jar:/usr/lib/jvm/:/home/liova/download/tpcw/tpc-w/:/usr/lib/jvm/java-6-sun-1.6.0.20/lib/dt.jar:/usr/lib/jvm/java-6-sun-1.6.0.20/lib/tools.jar:$CLASSPATH
2.解壓剛開始下載的tpcw-java-dist-1.0.zip檔案,我這裡解壓到路徑/home/liova/download/tpcw/tpc-w/下,修改其中的main.properties和tpcw.properties
下面是我的main.properties(最後的dbName確實要用std,但之後我們在資料庫裡建的資料庫名是用tpcw):
##############################################################################
# main.properties for build.xml.
# Copyright 2003 by Jan Kiefer.
#
# This file is distributed "as is". It comes with no warranty and the
# author takes no responsibility for the consequences of its use.
#
# Usage, distribution and modification is allowed to everyone, as long
# as reference to the author(s) is given and this license note is included.
###############################################################################
<!-- Path to servlet.jar, change this ... -->
cpServ=/usr/local/jakarta-tomcat-6/server/lib/servlet.jar
#<!-- Path to the JDBC driver for your DBMS, change this ... -->
cpJDBC=/usr/local/tomcat6/webapps/tpcw/WEB-INF/lib/mysql-connector-java-3.0.17-ga-bin.jar
#<!-- Directory where tpcw.war will be put with task 'inst' -->
webappDir=/usr/local/tomcat6/webapps/tpcw
#<!-- Path to the Perl interpreter. -->
perlPath=/usr/bin/perl
#<!-- Directory where the Images will be put with task genimg. -->
imagesDir=${webappDir}/Images
#<!-- Filter file for SQL queries, change this if needed -->
sqlFilter=sql-mysql.properties
dbName=std
#dbName=tpcw
以及我的tpcw.properties:
##############################################################################
# tpcw.properties for build.xml.
# Copyright 2003 by Jan Kiefer.
#
# This file is distributed "as is". It comes with no warranty and the
# author takes no responsibility for the consequences of its use.
相關推薦
[筆記] 大家一起來測試,benchmark起來(MySQL下的TPC-C,TPC-H,TPC-W)
前段時間在MySQL下做了些類基準測試,帖出小結。其中遇到許多小問題,不知道有遺漏步驟沒,也還有些問題沒解決,希望大家討論討論,一起測試起來吧,嘿嘿~環境:ubuntu9.10Server version: 5.1.37-1ubuntu5.4 (Ubuntu)一、TPC-
網友:有沒有一段程式碼,看起來簡單,實則威力無窮,程式設計師:有啊
話不多說,直接上圖 程式碼:System.exit(0); 這句程式碼,很簡單,但是也非常暴力。就是結束整個程式。 1、下面先演示下不加上這個語句: 然後控制檯輸出兩個println; 2、現在加這句程式碼放在中間 然後執行的效果就是: 3、現在把語句放在開頭
Django學習筆記(一)——安裝,創建項目,配置
lvs csv oot url root import 方式 配置文件 函數 瘋狂的暑假學習之 Django學習筆記(一) 教材 書《The Django Book》 視頻:csvt Django視頻 1.創建項目
Software Testing 閱讀筆記(一)測試概述
為什麼測試?1、對質量可接受性做出判斷 2、發現問題 錯誤:mistake ,在程式中出現的錯誤稱為bug 缺陷:是錯誤的結果,錯誤的表現 失效:當缺陷執行時會發生失效 事故:當出現失效時,可能會也可能不會呈現給使用者事故 下面是一個測試
Java NIO 學習筆記(一)----概述,Channel/Buffer
Java NIO (來自 Java 1.4)可以替代標準 IO 和 Java Networking API ,NIO 提供了與標準 IO 不同的使用方式。學習 NIO 之前建議先掌握標準 IO 和 Java 網路程式設計,推薦教程: 系統學習 Java IO----目錄,概覽 初步接觸 Java
軟體測試讀書筆記(一)測試概述
一測試概述 軟體危機曾經是軟體界甚至整個計算機界最熱門的話題。為了解決這場危機,軟體從業人員、專家和學者做出了大量的努力。現在人們已經逐步認識到所謂的軟體危機實際上僅是一種狀況,那就是軟體中有錯誤,正是這些錯誤導致了軟體開發
python學習筆記(一)執行,輸入輸出,資料型別
開學到現在6個星期過去了,前段時間真的是太忙了一直沒有時間更新自己的部落格。最近比較空,計劃把學的python跟opengl好好總結一下。 python執行方式 互動模式 命令列下直
Redis學習筆記(一)關於在windows64位環境下的安裝學習使用
客戶端 mas key-value 錯誤 services 再次 基準 alt 類型 前言 由於工作需要,目前我正在學習使用Redis。我當時學習Redis就從網上下載了點資料就開始學習了。入門看的是《REDIS入門指南》,這本書個人覺得很適合新手用來學習接觸。根據書上的引
Django學習筆記《一》初始化pycharm和mysql資料庫及相關環境
真的不太好學啊!記錄一下筆記,要不有的東西老師要查! CSRF驗證 防止偽造資料新增資料庫,關閉方式 MIDDLEWARE = [ 'django.middleware.security.Sec
mysql定時執行某一儲存過程,並實現mysql資料庫的定時備份
mysql儲存過程 1、儲存過程(Stored Procedure)是一組為了完成特定功能的SQL語句集,經編譯後儲存在資料庫中,使用者通過指定儲存過程的名字並給定引數(如果該儲存過程帶有引數)來呼叫執行它。 語法:CREATE PROCEDURE 過程名([[IN|OU
給出一百分制成績,要求成績等級‘A’‘B’‘C’‘D’‘E’。90分以上為A,80~89為B,70~79為C,60~69為D,60分以下為E.
#include<stdio.h> int main() { float score; char grade; printf("輸入學生的成績:\n"); scanf("%f",
小程式彈出的遮罩只有一屏高度,滾動顯示出下面的UI
問題:彈出的遮罩,由於沒有處理小程式的滾動擊穿,在遮罩下的滾動檢視如果很長,則滑動頁面,遮罩也滾動,沒有全屏。解決辦法:將遮罩的高度設定為滾動頁面內容的高度。步驟:需要獲取滾動頁面的高度,獲取螢幕的高度。如果滾動內容的高度大於螢幕高,則設定遮罩style高度為滾動內容的高度,
[演算法入門]快速排序非遞迴方法(Java實現),大家一起來找茬啊~
基礎 總結一下,快速排序的步驟: 1、找到一個key值(就是陣列第一個值),先從右到左找,找到一個比它小的值,記錄下標。 2、然後從左往右找,找到一個比它大的值,記錄下標。 3、交換找到的兩個數
一分鐘快三有什麽技巧規律,怎麽看大小單雙走勢技巧?大家一起來交流。
部分 blank get targe 十分 走勢技巧 還要 才有 而不是 導師(768841507)曾經軟件計劃10連中,我跟第一把就死;我在想我到底是有多背?這麽小的幾率都能被我趕上?後來想了很多,想明白了一個問題,我們是在賭,也就是在賭運氣,而運氣有好的時候也有壞的
分享安微快三穩贏技巧,長龍預測,教你砍龍和順龍規律,大家一起來交流。
預測 後來 規劃 找我 否則 盈利 的人 都是 還在 導師(359213571)曾經軟件計劃10連中,我跟第一把就死;我在想我到底是有多背?這麽小的幾率都能被我趕上?後來想了很多,想明白了一個問題,我們是在賭,也就是在賭運氣,而運氣有好的時候也有壞的 時候,都是有一定概率
最近接了本分散式元件面試書的選題,請大家一起來提意見
最近我在清華大學出版社出了一本書,《基於股票大資料分析的Python入門實戰 視訊教學版》,京東連結:https://item.jd.com/69241653952.html,就順便又接了本選題,Java分散式高併發元件面試攻略。以前我出的書,不能說不用心,題材也不能說
【gooogleman組織】大家一起來diy 超低價四核的exynos4412或者Cortex A8 S5pv210開源
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
送你一份來自杭州的禮物,約起來!
打造敏捷與運維領域標杆峰會! 2016年全球敏捷運維峰會(Gdevops, Global Devops Summit)將於2016年在杭州、北京、廣州、上海四城全面啟動,本次峰會由上海市經濟和資訊化委員會指導,上海市雲端計算產業促進中心主辦,Gdevops組委會、DBA+社群、三墩IT人聯合承辦,
Java學習筆記38:通過Spring Bean 注入static變數,來設計一套適合測試,開發,生產環境的配置項
這邊文章的目的主要是為了在spring開發web專案的時候,讓我們的測試,開發,生產環境的配置項 .properties作為配置檔案。 我們首先需要建立一個config資料夾,然後建立開發,測試,生產環境的.properties配置項檔案。 例如,dev.proper
大家一起來分析一下這個SQL
今年工作遇到這樣一個問題,公司上不了網,自己寫了一下。SQL的形式大概是下面的形式。select * from (select c1, c2 from table1union allselect c1, c2 from