tpch测试mysql_MySQL数据库之MySQL-tpch 测试工具简要手册
本文主要向大家介绍了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 测试工具简要手册相关推荐
- mysql tpch_MySQL tpch测试工具简要手册
MySQLtpch测试工具简要手册 tpch是TPC(Transaction Processing Performance Council)组织提供的工具包.用于进行OLAP测试,以评估商业分析中决策 ...
- tpch测试mysql_MySQL-tpch 测试工具简要手册
tpch是TPC(Transaction Processing Performance Council)组织提供的工具包.用于进行OLAP测试,以评估商业分析中决策支持系统(DSS)的性能.它包含了一 ...
- tpch测试mysql_MySQL TPCH测试工具简要手册
tpch是TPC(Transaction Processing Performance Council)组织提供的工具包.用于进行OLAP测试,以评估商业分析中决策支持系统(DSS)的性能.它包含了一 ...
- 使用JMeter创建数据库(Mysql)测试
我的环境:MySQL:mysql-essential-5.1.51-win32 jdbc驱动:我已经上传到csdn上一个:http://download.csdn.net/source/3451945 ...
- mysql iops 测试_MySQL数据库入门:FIO测试磁盘IOPS
一.fio安装 去官网下载最新fio工具,编译安装即可 解压tar -zxvf fio-2.1.10.tar.gz 安装make make install 二.测试 filename=/dev/emc ...
- 无法打开数据库‘mysql_MySQL数据库之MYSQL无法启动解决方法
本文主要向大家介绍了MySQL数据库之MYSQL无法启动解决方法 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 在my.ini(linux下/etc/my.cnf)加上skip ...
- ngram mysql_MySQL数据库之MySQL 全文检索 ngram Mybatis
本文主要向大家介绍了MySQL数据库之MySQL 全文检索 ngram Mybatis ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 创建全文索引(FullText index ...
- isfull mysql_MySQL数据库之MySQL 出现 The table is full 的解决方法
本文主要向大家介绍了MySQL数据库之MySQL 出现 The table is full 的解决方法 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. 当我们要写入新数据而发生& ...
- prepared statement mysql_MySQL数据库之MySQL Prepared Statement
本文主要向大家介绍了MySQL数据库之MySQL Prepared Statement ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. Summary: in this tuto ...
最新文章
- VMware下centos7安装VMware Tools
- Microsoft Visual Studio (VS)2010 常用快捷键大全 便捷开发
- AI:2020年WAIC世界人工智能大会2020年7月9日9:30-12:00开幕式《李彦宏、Elon Musk、马云等大佬演讲》
- 【python】排序算法的稳定性冒泡排序(画图详细讲解)
- 一键转发抢红包源码及搭建教程
- 面向对象程序设计——UML分析和本学期总结
- Python使用pdfkit、wkhtmltopdf将html转换为pdf错误记录文档
- python调用phone库查询手机号码相关信息
- 七年级下计算机课教学记录表,电脑集体备课记录表
- iOS 集成友盟分享图片链接为http时无法加载问题解决
- 【无人机学习】惯性导航系统简介
- 一文了解CISP,太全了
- Office 2007 SP3 正试版补丁包下载
- 输入若干个字符串,查找其中的最大字母,在该字母后面插入字符串“(max)”
- 【王道】操作系统OS第三章存储系统(三)
- 2022阿里云国际注册教程-不用绑定paypal注册-Unirech阿里云代充
- 宽带连不上网原因及解决办法
- 在python中import什么意思_python的import是什么意思
- 射频收发信机架构和射频信号介绍
- 【Go】Go 语言切片(Slice)
热门文章
- python之__repr__
- 如何远程登录连接Linux云服务器(电脑端/移动端)?
- python对象的引用_Python 对象引用、可变性和垃圾回收
- powerdesigner导入sql生成pdm没有注释_PDM手写签名实现方法
- 计算机专业中英文,计算机专业词汇中英文对照
- 绘图的尺寸_Auto CAD机械绘图尺寸标注教程10(标注多重引线)
- npm ERR! code ERR_STREAM_WRITE_AFTER_END npm install 报错实力踩坑npm,自从用了npm之后项目构建和插件管理确实方便了很多,但也是被坑的不要不要的
- 服务器日志egl文件,【图片】Liddy's Linux编译日志(版本8.4)【蕾迪猫的linux吧】_百度贴吧...
- springmvc 页面跳转样式访问路径总是多一层地址_Net Core实战之基于角色的访问控制的设计...
- 博图在线升级 gsd_升级ing!旺铺不够吸引人?快来学习国际站“吸睛”新玩法...