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相关推荐

  1. 教程,使用YCSB测试MYSQL数据库,获取千万条测试后的数据

    Yahoo! Cloud Serving Benchmark (YCSB)是一个数据库特别是nosql数据库性能测试的benchmark.在GitHub中有3.9千个star和1.9千个forks.本 ...

  2. mysql smack_super-smack测试mysql性能

    最近对MySql的性能要求越来越高了,所以也需要做相关的压力仿真测试. super-smack测试mysql性能 一.使用Red Hat Enterprise Linux Server release ...

  3. benchmark mysql_程序员的MySQL手册(二): 监控与benchmark

    这一节我们主要讲解如何监控MySQL的性能数据,以及如何对MySQL进行压测. 使用Prometheus进行监控 MySQL的监控方案有很多,我们使用Prometheus来进行监测,首先要安装prom ...

  4. 测试 MySQL 性能的几款工具

    有一些有用的工具可以测试MySQL 和基于MySQL 的系统的性能.这里将演示如何利用这些工具进行测试. mysqlslap mysqlslap可以模拟服务器的负载,并输出计时信息.它包含在MySQL ...

  5. mysql jdbc 绑定变量_jdbc测试mysql数据库sql预解析(绑定变量)

    jdbc测试mysql数据库sql预解析(绑定变量) 用习惯了oracle,学习mysql,想测试一下mysql绑定变量的效果.以前看网上介绍大部份都说mysql没有sql共享池的概念,所以也不存在s ...

  6. 运用Loadrunner测试Mysql数据库性能

    为什么80%的码农都做不了架构师?>>>    前言 针对数据库的性能测试,loadrunner本身支持sql server和oracle数据库,这两种数据库可以用loadrunne ...

  7. benchmark如何测试mysql数据库_MySQL的benchmark函数

    MySQL实现了很多独特的函数,有时候使用起来是非常的方便,或许这就是开源的好处吧.这里记录一下benchmark函数,一个用于测试MySQL函数性能的函数.benchmark函数只有两个参数,第一个 ...

  8. devops+备份mysql_使用Xtrabackup备份 MySQL 数据库

    使用Xtrabackup备份 MySQL 数据库 mysql的备份无非有下面几种方式: 1.mysqldump 2.mysqlhotcopy 3.采用Linux LVM的 snapshot 功能进行数 ...

  9. 墨者靶场-SQL手工注入漏洞测试(MySQL数据库-字符型)

    0x00 前言 我们都知道,SQL注入分数字型和字符型,我们上次讲的是最基本的数字型SQL注入,这次我们就来讲最基本的字符型SQL注入.同样,如果是明白原理和方法的话,看懂这篇文章并不难,但是如果不清 ...

最新文章

  1. R绘制QQ图并解读QQ图
  2. Kinect for windows的重力感应和角度马达
  3. iOS 模糊化效果 ANBlurredImageView的使用
  4. mac php 怎么启动命令,Mac 使用homebrew启动PHP环境命令
  5. java常用算法_JAVA编程常用算法——冒泡排序
  6. c语言输入与输出库函数#includestdio.h
  7. ajax请求相关问题
  8. [AtCoder Regular Contest 124E] Pass to Next(dp+数学)
  9. strip and linux lib compile
  10. okHttp3 源码分析
  11. JavaScript学习总结(二十)——Javascript非构造函数的继承
  12. java 货币格式 转换_java格式化数值成货币格式示例
  13. 泰迪杯数据挖掘挑战赛—数据预处理(二)
  14. stm32低功耗解决方案-(外部时钟芯片RX8025T)
  15. 域名续费如何省钱?将域名转入阿里云的一次操作过程
  16. 【案例】CRM客户管理系统的登录模型
  17. 搜狗站点管理收录与实际收录不符合怎么办?
  18. 深度学习(图像方向)常见名词术语
  19. mysql出现core dumped_mysql 段错误 (core dumped)
  20. Traffic Shifting

热门文章

  1. 【Android】在res中的图片下载导入到手机相册中的实现
  2. strstr()函数的使用说明(C语言)
  3. 什么是邮箱地址?邮箱地址在哪里找?
  4. 「自控元件及线路」5 步进电机及其控制
  5. 车企们的第一辆车是什么样的
  6. 【英语六级】【仔细阅读】(3)
  7. 基于阿里云容器服务的微服务实践 - Part 1. 微服务与Docker
  8. Electron-vue开发桌面应用调用TSCLIB.dll(tsc标签打印机连接库)
  9. 前端人工智能?TensorFlow.js 学会游戏通关
  10. 如何翻译图片?这些实用方法值得收藏