本文主要向大家介绍了MySQL数据库之MySQL-tpch 测试工具简要手册 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助。

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:  TPCHDATABASE= MYSQLMACHINE = LINUXWORKLOAD = 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 50TPC-H Population Generator (Version 2.9.0)Copyright Transaction Processing Performance Council 1994 - 2008

real    192m43.897suser    37m45.398ssys     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.tbldbgen参数 -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>&1 exec 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 ]doif [ $N -lt 10 ] ;thenNN='0'$NelseNN=$Nfiecho "query $NN starting"/etc/init.d/mysql restarttime mysql -f tpch < ./queries/tpch_${NN}.sqlecho "query $NN ended!"N=`expr $N + 1`done I=`expr $I + 1`Done

附件:tpch初始化、自动化测试脚本压缩包与word手册。

本文由职坐标整理并发布,希望对同学们学习MySQL有所帮助,更多内容请关注职坐标数据库MySQL数据库频道!

tpch测试mysql_MySQL数据库之MySQL-tpch 测试工具简要手册相关推荐

  1. mysql tpch_MySQL tpch测试工具简要手册

    MySQLtpch测试工具简要手册 tpch是TPC(Transaction Processing Performance Council)组织提供的工具包.用于进行OLAP测试,以评估商业分析中决策 ...

  2. tpch测试mysql_MySQL-tpch 测试工具简要手册

    tpch是TPC(Transaction Processing Performance Council)组织提供的工具包.用于进行OLAP测试,以评估商业分析中决策支持系统(DSS)的性能.它包含了一 ...

  3. tpch测试mysql_MySQL TPCH测试工具简要手册

    tpch是TPC(Transaction Processing Performance Council)组织提供的工具包.用于进行OLAP测试,以评估商业分析中决策支持系统(DSS)的性能.它包含了一 ...

  4. 使用JMeter创建数据库(Mysql)测试

    我的环境:MySQL:mysql-essential-5.1.51-win32 jdbc驱动:我已经上传到csdn上一个:http://download.csdn.net/source/3451945 ...

  5. mysql iops 测试_MySQL数据库入门:FIO测试磁盘IOPS

    一.fio安装 去官网下载最新fio工具,编译安装即可 解压tar -zxvf fio-2.1.10.tar.gz 安装make make install 二.测试 filename=/dev/emc ...

  6. 无法打开数据库‘mysql_MySQL数据库之MYSQL无法启动解决方法

    本文主要向大家介绍了MySQL数据库之MYSQL无法启动解决方法 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 在my.ini(linux下/etc/my.cnf)加上skip ...

  7. ngram mysql_MySQL数据库之MySQL 全文检索 ngram Mybatis

    本文主要向大家介绍了MySQL数据库之MySQL 全文检索 ngram Mybatis ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 创建全文索引(FullText index ...

  8. isfull mysql_MySQL数据库之MySQL 出现 The table is full 的解决方法

    本文主要向大家介绍了MySQL数据库之MySQL 出现 The table is full 的解决方法 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 当我们要写入新数据而发生& ...

  9. prepared statement mysql_MySQL数据库之MySQL Prepared Statement

    本文主要向大家介绍了MySQL数据库之MySQL Prepared Statement ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. Summary: in this tuto ...

最新文章

  1. VMware下centos7安装VMware Tools
  2. Microsoft Visual Studio (VS)2010 常用快捷键大全 便捷开发
  3. AI:2020年WAIC世界人工智能大会2020年7月9日9:30-12:00开幕式《李彦宏、Elon Musk、马云等大佬演讲》
  4. 【python】排序算法的稳定性冒泡排序(画图详细讲解)
  5. 一键转发抢红包源码及搭建教程
  6. 面向对象程序设计——UML分析和本学期总结
  7. Python使用pdfkit、wkhtmltopdf将html转换为pdf错误记录文档
  8. python调用phone库查询手机号码相关信息
  9. 七年级下计算机课教学记录表,电脑集体备课记录表
  10. iOS 集成友盟分享图片链接为http时无法加载问题解决
  11. 【无人机学习】惯性导航系统简介
  12. 一文了解CISP,太全了
  13. Office 2007 SP3 正试版补丁包下载
  14. 输入若干个字符串,查找其中的最大字母,在该字母后面插入字符串“(max)”
  15. 【王道】操作系统OS第三章存储系统(三)
  16. 2022阿里云国际注册教程-不用绑定paypal注册-Unirech阿里云代充
  17. 宽带连不上网原因及解决办法
  18. 在python中import什么意思_python的import是什么意思
  19. 射频收发信机架构和射频信号介绍
  20. 【Go】Go 语言切片(Slice)

热门文章

  1. python之__repr__
  2. 如何远程登录连接Linux云服务器(电脑端/移动端)?
  3. python对象的引用_Python 对象引用、可变性和垃圾回收
  4. powerdesigner导入sql生成pdm没有注释_PDM手写签名实现方法
  5. 计算机专业中英文,计算机专业词汇中英文对照
  6. 绘图的尺寸_Auto CAD机械绘图尺寸标注教程10(标注多重引线)
  7. npm ERR! code ERR_STREAM_WRITE_AFTER_END npm install 报错实力踩坑npm,自从用了npm之后项目构建和插件管理确实方便了很多,但也是被坑的不要不要的
  8. 服务器日志egl文件,【图片】Liddy's Linux编译日志(版本8.4)【蕾迪猫的linux吧】_百度贴吧...
  9. springmvc 页面跳转样式访问路径总是多一层地址_Net Core实战之基于角色的访问控制的设计...
  10. 博图在线升级 gsd_升级ing!旺铺不够吸引人?快来学习国际站“吸睛”新玩法...