ycsb mysql_使用 YCSB 测试 MySQL on TerarkDB
1. 安装并启动 TerarkSQL
2. 创建测试所需的数据库以及表
下载测试程序以及创建测试所需要表的 SQL 脚本
wget http://terark-downloads.oss-cn-qingdao.aliyuncs.com/docker_assets/ycsb-terarksql-test.tar.gz
tar zxvf ycsb-terarksql-test.tar.gz
创建测试表
mysql -uroot -h127.0.0.1 < ycsb-terarksql-test/mediawiki_table.sql
3. 导入 wikipedia 数据
下载 wikipedia 数据
wget http://dumps.wikimedia.your.org/enwiki/20170820/enwiki-20170820-pages-meta-current.xml.bz2
将 wikipedia 数据导入到数据库中
cd ycsb-terarksql-test/mwdumper
java -server -classpath mysql-connector-java-5.1.42-bin.jar:mwdumper-1.25.jar \
org.mediawiki.dumper.Dumper \
--output=mysql://127.0.0.1/my_wiki?user=root\&characterEncoding=latin1 \
--format=sql:1.5 /path/to/enwiki-20170820-pages-meta-current.xml.bz2
wikipeida 数据较大,导入需要较长时间,可以以 nohup 方式启动运行于后台。
4. 开始测试
前下载的 ycsb-terarksql-test.tar.gz 中已经包含了编译好的修改版 YCSB 测试程序:
cd ycsb-terarksql-test/ycsb-jdbc-binding-0.13.0-SNAPSHOT
该测试程序亦可通过源码直接编译:
git clone https://github.com/Terark/YCSB.git
cd YCSB
mvn -pl com.yahoo.ycsb:jdbc-binding -am clean package
若使用 wikipeida 数据进行测试,在导入的所有表中,text 表占所有数据大小的 77%,所以测试中仅对 text 表进行所有的测试。
整个测试过程,可以大致分为两个阶段,为:
随机读测试(只读)
读写混合测试
4.1. 配置文件准备
根据上面两个阶段,我们可以创建两个不同的配置文件,如:
wikipedia_read.conf,wikipedia_readwrite.conf
完整的配置选项参考这里
每个配置文件的配置项目各不相同, 参数的大致说明:
workload:指定我们定制的 workload:MySQLReadByKeyFromFileWorkload
keyfile:key 文件的路径
fieldnames:测试表中所有字段名,每一个使用“,”分割。
writerate:读写比例
mysql.upsert=true:在混合测试中会把随机读出的数据插入到一个临时表中,而可能会导致主键冲突,将 upsert 设为 true 以使用 REPLACE INTO 语法
4.2. 获取随机读取所使用 key 文件
此测试需要先生成 key 文件,若使用 wikipeida 数据进行测试,可以将 text 表的主键 old_id 导出并进行 shuf 以生成进行随机读取所需要的 key 文件:
mysql -uroot -h127.0.0.1
use my_wiki
select old_id from text into outfile "/path/to/wikipedia_text_old_ids.txt";
shuf /path/to/wikipedia_text_old_ids.txt > /path/to/wikipedia_text_old_ids_shuf.txt
4.3. 随机读测试
配置文件示例(wikipedia_read.conf):
# wikipedia_read.conf
workload=com.yahoo.ycsb.workloads.MySQLReadByKeyFromFileWorkload
# 总操作数,自由定义
operationcount=64000000
# 进行压测的数据表
table=text
# 表的字段
fieldnames=old_id,old_text,old_flags
# 表的主键
primarykey=old_id
#进行随机读写的 key 文件
keyfile=/path/to/wikipedia_text_old_ids_shuf.txt
jdbc.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://127.0.0.1/my_wiki
db.user=root
db.passwd=
启动测试脚本:
./bin/ycsb run jdbc -s -P wikipedia_read.conf -threads 8 > read_wikipedia_thread_8.txt
4.4. 读写混合测试
在混合测试中会按预定比例将一部分数据写到一个临时表中去,使用 wikipeida 数据测试时可使用下面的 SQL 语句建立这个临时表:
CREATE TABLE `text_for_write` (`old_id` int(10) unsigned NOT NULL AUTO_INCREMENT, `old_text` mediumblob NOT NULL, `old_flags` tinyblob NOT NULL, PRIMARY KEY (`old_id`) ) ENGINE=ROCKSDB;
在开始每次混合测试时可以先将这个临时表清空:
truncate table text_for_write;
配置文件示例(wikipedia_readwrite.conf):
# wikipedia_readwrite.conf
workload=com.yahoo.ycsb.workloads.MySQLReadByKeyFromFileWorkload
# 总操作数,自由定义
operationcount=64000000
# 进行压测的数据表
table=text
# 写操作中数据插入的临时表
writetable=text_for_write
# 表的字段
fieldnames=old_id,old_text,old_flags
# 表的主键
primarykey=old_id
#进行随机读写的 key 文件
keyfile=/path/to/wikipedia_text_old_ids_shuf.txt
# 写占的比例,0.05 表示 5%
writerate=0.05
jdbc.driver=com.mysql.jdbc.Driver
db.url=jdbc:mysql://127.0.0.1/my_wiki
db.user=root
db.passwd=
mysql.upsert=true
启动测试脚本:
./bin/ycsb run jdbc -s -P wikipedia_readwrite.conf -threads 8 > readwrite_wikipedia_thread_8.txt
ycsb mysql_使用 YCSB 测试 MySQL on TerarkDB相关推荐
- 教程,使用YCSB测试MYSQL数据库,获取千万条测试后的数据
Yahoo! Cloud Serving Benchmark (YCSB)是一个数据库特别是nosql数据库性能测试的benchmark.在GitHub中有3.9千个star和1.9千个forks.本 ...
- mysql smack_super-smack测试mysql性能
最近对MySql的性能要求越来越高了,所以也需要做相关的压力仿真测试. super-smack测试mysql性能 一.使用Red Hat Enterprise Linux Server release ...
- benchmark mysql_程序员的MySQL手册(二): 监控与benchmark
这一节我们主要讲解如何监控MySQL的性能数据,以及如何对MySQL进行压测. 使用Prometheus进行监控 MySQL的监控方案有很多,我们使用Prometheus来进行监测,首先要安装prom ...
- 测试 MySQL 性能的几款工具
有一些有用的工具可以测试MySQL 和基于MySQL 的系统的性能.这里将演示如何利用这些工具进行测试. mysqlslap mysqlslap可以模拟服务器的负载,并输出计时信息.它包含在MySQL ...
- mysql jdbc 绑定变量_jdbc测试mysql数据库sql预解析(绑定变量)
jdbc测试mysql数据库sql预解析(绑定变量) 用习惯了oracle,学习mysql,想测试一下mysql绑定变量的效果.以前看网上介绍大部份都说mysql没有sql共享池的概念,所以也不存在s ...
- 运用Loadrunner测试Mysql数据库性能
为什么80%的码农都做不了架构师?>>> 前言 针对数据库的性能测试,loadrunner本身支持sql server和oracle数据库,这两种数据库可以用loadrunne ...
- benchmark如何测试mysql数据库_MySQL的benchmark函数
MySQL实现了很多独特的函数,有时候使用起来是非常的方便,或许这就是开源的好处吧.这里记录一下benchmark函数,一个用于测试MySQL函数性能的函数.benchmark函数只有两个参数,第一个 ...
- devops+备份mysql_使用Xtrabackup备份 MySQL 数据库
使用Xtrabackup备份 MySQL 数据库 mysql的备份无非有下面几种方式: 1.mysqldump 2.mysqlhotcopy 3.采用Linux LVM的 snapshot 功能进行数 ...
- 墨者靶场-SQL手工注入漏洞测试(MySQL数据库-字符型)
0x00 前言 我们都知道,SQL注入分数字型和字符型,我们上次讲的是最基本的数字型SQL注入,这次我们就来讲最基本的字符型SQL注入.同样,如果是明白原理和方法的话,看懂这篇文章并不难,但是如果不清 ...
最新文章
- R绘制QQ图并解读QQ图
- Kinect for windows的重力感应和角度马达
- iOS 模糊化效果 ANBlurredImageView的使用
- mac php 怎么启动命令,Mac 使用homebrew启动PHP环境命令
- java常用算法_JAVA编程常用算法——冒泡排序
- c语言输入与输出库函数#includestdio.h
- ajax请求相关问题
- [AtCoder Regular Contest 124E] Pass to Next(dp+数学)
- strip and linux lib compile
- okHttp3 源码分析
- JavaScript学习总结(二十)——Javascript非构造函数的继承
- java 货币格式 转换_java格式化数值成货币格式示例
- 泰迪杯数据挖掘挑战赛—数据预处理(二)
- stm32低功耗解决方案-(外部时钟芯片RX8025T)
- 域名续费如何省钱?将域名转入阿里云的一次操作过程
- 【案例】CRM客户管理系统的登录模型
- 搜狗站点管理收录与实际收录不符合怎么办?
- 深度学习(图像方向)常见名词术语
- mysql出现core dumped_mysql 段错误 (core dumped)
- Traffic Shifting