tpcc-mysql的安装和使用
tpcc-mysql介绍
TPC(Tracsaction Processing Performance Council) 事务处理性能协会是一个评价大型数据库系统软硬件性能的非盈利的组织,TPC-C是TPC协会制定的,用来测试典型的复杂OLTP系统的性能。Tpcc-mysql是percona基于tpcc衍生出来的产品,专用于mysql基准测试.
安装与使用
官网地址:https://github.com/Percona-Lab/tpcc-mysql
实验环境:阿里云轻量应用服务器
步骤:
1)下载源代码
git clone https://github.com/Percona-Lab/tpcc-mysql.git
2)编译
在编译之前需要安装mysql和mysql编译时链接的库
sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install libmysqlclient-dev
cd tpcc-mysql/src
make
编译完成后会生成两个可执行文件,tpcc_load是导入数据的脚本,tpcc_start是执行测试的脚本.
3) 加载数据
- 创建数据库
mysqladmin -u root -p passwd create tpcc1000 - 创建表
mysql tpcc1000 < create_table.sql - 创建相关索引和主外键(这一步也可以在加载数据之后完成)
mysql tpcc1000 < add_fkey_idx.sql - 填充数据
- 简单的步骤是
./tpcc_load -h127.0.0.1 -d tpcc1000 -u root -p passwd -w 100,可以通过tpcc_load --help查看所有的选项,最后一个参数是仓库的个数,例如创建100个仓库(warehouse)并填充数据 - 加载数据比较慢(20分钟),可用loah.sh 脚本并行加载,后面有写
- 简单的步骤是
显示一下创建的表:
$mysql -uroot -p -e "show tables from TPCC"
+--------------------+
| Tables_in_tpcctest |
+--------------------+
| customer |
| district |
| history |
| item |
| new_orders |
| order_line |
| orders |
| stock |
| warehouse |
+--------------------+
4)开始基准测
./tpcc_start -h 127.0.0.1 -p 3306 -d tpcc1000 -u root -p "123123" -w 100 -c 10 -r 100 -l 300 -i 20 -f /var/log/tpcc_mysql.log -t /var/log/tpcc_mysql.rtx- |hostname| |port| |dbname| |user| |WAREHOUSES| |CONNECTIONS| |WARMUP TIME| |BENCHMARK TIME|
pcc_start --help查看所有选项
参数说明:
-w warehouse 仓库;
-c 连接数;
-r warmup_time:指定预热时间,以秒为单位,默认是10秒,主要目的是为了将数据加载到内存;
-l running_time:指定测试执行时间,以秒为单位,默认是20秒;
-i report_interval:指定生产报告的时间间隔,默认是10秒,我这里设置了20秒;
-f report_file:将测试中各项操作的记录输出到指定文件内保存;
-t trx_file:输出更详细的操作信息到指定文件内保存;
结果解读
见下一篇博客 tpcc-mysql运行结果解读
至此基本的已经完成,没有遇到问题不用往下看了
并发加载数据
单进程加载
./tpcc_load -h127.0.0.1 -d tpcc1000 -u root -p passwd -w 100
并发加载
需要根据你的实际情况修改一下(主要是改密码
方法一
./load.sh tpcc1000 100
通过load.sh并发加载数据(创建100个warsehouse)
造数据成功后,会提示:…DATA LOADING COMPLETED SUCCESSFULLY.
方法二
GitHub上另一个并行加载脚本: https://gist.github.com/sh2/3458844
根据实际情况情况修改用户名、密码、数据库名,初始仓库为10个。
由于最新版本tpcc_load使用方法需要显示使用参数,修改脚本如下
vim tpcc_load_parallel.sh
#!/bin/bash # Configration MYSQL=/usr/bin/mysql
TPCCLOAD=./tpcc_load
TABLESQL=./create_table.sql
CONSTRAINTSQL=./add_fkey_idx.sql
DEGREE=`getconf _NPROCESSORS_ONLN` SERVER=localhost
DATABASE=tpcc1000
USER=root
PASS=123123
WAREHOUSE=10 # Load set -e
$MYSQL -u $USER -p$PASS -e "DROP DATABASE IF EXISTS $DATABASE"
$MYSQL -u $USER -p$PASS -e "CREATE DATABASE $DATABASE"
$MYSQL -u $USER -p$PASS $DATABASE < $TABLESQL
$MYSQL -u $USER -p$PASS $DATABASE < $CONSTRAINTSQL echo 'Loading item ...'
$TPCCLOAD -h $SERVER -d $DATABASE -u $USER -p $PASS -w $WAREHOUSE 1 1 -n $WAREHOUSE > /dev/null set +e
STATUS=0
trap 'STATUS=1; kill 0' INT TERM for ((WID = 1; WID <= WAREHOUSE; WID++)); do
echo "Loading warehouse id $WID ..." (
set -e # warehouse, stock, district
$TPCCLOAD -h $SERVER -d $DATABASE -u $USER -p $PASS -w $WAREHOUSE 2 -m $WID -n $WID > /dev/null # customer, history
$TPCCLOAD -h $SERVER -d $DATABASE -u $USER -p $PASS -w $WAREHOUSE 3 -m $WID -n $WID > /dev/null # orders, new_orders, order_line
$TPCCLOAD -h $SERVER -d $DATABASE -u $USER -p $PASS -w $WAREHOUSE 4 -m $WID -n $WID > /dev/null
) & PIDLIST=(${PIDLIST[@]} $!) if [ $((WID % DEGREE)) -eq 0 ]; then
for PID in ${PIDLIST[@]}; do
wait $PID if [ $? -ne 0 ]; then
STATUS=1
fi
done if [ $STATUS -ne 0 ]; then
exit $STATUS
fi PIDLIST=()
fi
done for PID in ${PIDLIST[@]}; do
wait $PID if [ $? -ne 0 ]; then
STATUS=1
fi
done if [ $STATUS -eq 0 ]; then
echo 'Completed.'
fi exit $STATUS
tpcc_load_parallel.sh
遇到的几个问题
1. 需要安装mysql,对应的链接库也要安装,makefile中需要(不然make命令报错)
!sudo apt-get install mysql-server //服务端
!sudo apt-get install mysql-client //客户端
!sudo apt-get install libmysqlclient-dev //程序编译时链接的库
2. 执行 tpcc_load -h127.0.0.1 -d tpcc1000 -u root -p "" -w 100时,报错ERROR 1698 (28000): Access denied for user 'root'@'localhost' (using password: NO)
解决方法:
方法很简单,查看一下user表,错误的起因就是在这里, root的plugin被修改成了auth_socket,用密码登陆的plugin应该是mysql_native_password。(由于可以用sudo mysql -uroot -p进入,所以并不需要以安全模式启动)
mysql> select user, plugin from mysql.user;
+-----------+-----------------------+
| user | plugin |
+-----------+-----------------------+
| root | auth_socket |
| mysql.sys | mysql_native_password |
| dev | mysql_native_password |
+-----------+-----------------------+
3 rows in set (0.01 sec)
只要把auth_socket改成mysql_native_password就行了:
mysql> update mysql.user set authentication_string=PASSWORD('mima'),
plugin='mysql_native_password' where user='root';
Query OK, 1 row affected, 1 warning (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 1
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
之后退出mysql,重启一下,就可以了.
原因应该是安装时没有给root设置密码,但是步骤3的前三个命令默认无密码...,直接运行会报错:
root@iZj6c9c6vaqj1i0a9j7h78Z:/home/admin/tpcc-mysql# mysqladmin create tpcc1000
mysqladmin: connect to server at 'localhost' failed
只需再后面加上 -p密码 ,警告不安全可不管。
参考链接:
1. https://www.jianshu.com/p/2b63c65caf6a
2. https://blog.51cto.com/goome/1958328
3. 官网教程 https://github.com/Percona-Lab/tpcc-mysql
tpcc-mysql的安装和使用的更多相关文章
- MySql免安装版安装配置,附MySQL服务无法启动解决方案
文首提要: 我下载的MySQL版本是:mysql-5.7.17-winx64.zip Archive版:系统:Windows7 64位. 一.解压文件 下载好My ...
- Mysql(windows)安装
h3 { color: rgb(255, 255, 255); background-color: rgb(30,144,255); padding: 3px; margin: 10px 0px } ...
- MYSQL离线安装
由于MySQL的广泛应用,MySQL的安装也就成了大家经常会碰到的问题.并且由于不是所有机器都可连接外网,所以MySQL的离线安装显得比较重要.而本文旨在介绍CentOS6.6下离线安装MySQL. ...
- 虚拟机+apache+php+mysql 环境安装配置
虚拟机的安装:直接下一步即可,注意修改路径. 安装完成后新建虚拟机,直接下一步.如果选择镜像文件后出现错误,可以试着去修改电脑bios中的虚拟化设置,改为enable,如下图: apache安装: 1 ...
- Windows 下 zip 版的 MySQL 的安装
创建 配置文件 当 MySQL server 启动时,它会在按照下表列出位置的顺序寻找并读取配置文件: File Name Purpose %PROGRAMDATA%\MySQL\MySQL Ser ...
- mysql 编译安装
mysql 编译安装方式: ```cd /home/oldboy/tools``` 创建 目录 if not have then mkd ...
- MYSQL的安装
1.将mysql的安装文件放入虚拟机 2.搭建yum库 3.依次安装mysql的5个文件 最后一个server需要的依赖太多,所以用yum进行安装. 6.进行mysql的重置 mysql_instal ...
- MYSQL介绍安装及一些问题解决
一.简介 MySQL是最流行的开放源码SQL数据库管理系统,它是由MySQL AB公司开发.发布并支持的.有以下特点: MySQL是一种数据库管理系统. MySQL是一种关联数据库管理系统. MySQ ...
- 大数据系列(5)——Hadoop集群MYSQL的安装
前言 有一段时间没写文章了,最近事情挺多的,现在咱们回归正题,经过前面四篇文章的介绍,已经通过VMware安装了Hadoop的集群环境,相关的两款软件VSFTP和SecureCRT也已经正常安装了. ...
- MySQL免安装数据库配置-Windows8.1
1. 解压Mysql压缩包,将包中my-default.ini复制一份,改名为my.ini,添加一下配置信息到my.ini: [client] port=3306 default-character- ...
随机推荐
- koa-router 路由参数与前端路由的结合
koa-router 定制路由时支持通过冒号形式在 url 中指定参数,该参数会挂载到 context 上然后可通过 context.params.paramName 方便地获取. 考察下面的示例: ...
- 如何使用jmeter连接数据库并提取数据库中的值作为参数,与响应信息中提取的值进行比较
思路: 连接数据库 获取数据库返回的数据 获取接口返回的数据 两者返回数据进行对比验证 连接数据库 1.jmeter要链接mysql数据库,首先得下载mysql jdbc驱动包(注:驱动包的版本一定要 ...
- 从图(Graph)到图卷积(Graph Convolution):漫谈图神经网络模型 (二)
本文属于图神经网络的系列文章,文章目录如下: 从图(Graph)到图卷积(Graph Convolution):漫谈图神经网络模型 (一) 从图(Graph)到图卷积(Graph Convolutio ...
- hyperledger fabric 1.0.5 分布式部署 (八)
gdb debug peer 程序 在开始我们从 github 上download 下来的源码包,实际上已经包含了可执行的 peer 程序,但是该程序是使用 release 方式编译的,并不支持gdb ...
- RobotFramework学习笔记-Web自动化
一.窗口关键字使用 1.当前浏览器弹出新的窗口 使用Select Window和Close Window处理弹出窗口.实际使用中Select Window不一定会一次选中,通常会结合Wait Unti ...
- vue中的导航守卫
官方文档地址: 导航守卫:https://router.vuejs.org/zh-cn/advanced/navigation-guards.html 好的,重点内容 router.beforeEac ...
- CF920F SUM and REPLACE 线段树
给你一个数组a_i,D(x)为x的约数个数 两种操作: 1.将[l,r]的a_i替换为D(a_i) 2.输出∑a_i ( l <= i <= r ) 当区间最大值<=2时,就不 ...
- JavaScript实现一个简单的密码输入功能
常见的密码输入框当输入字符后会被替换成‘*’,而且旁边会有个小眼睛可以查看原本的字符,虽然input标签有这个功能,但这只是自己正在看正则表达式的时候突然想到的,就当做个练习,自己手动实现下: < ...
- 读取jar包内的文件内容
package com.chanpion.boot; import org.springframework.util.ResourceUtils; import java.io.File; impor ...
- Spring RestTemplate实现服务间的远程调用完整代码示例
父pom: 服务提供方 pom: provider配置文件: provider启动类: provider实体类: provider Mapper: 内置了增删改查的方法 provider Servic ...