NewSQL数据库压力测试工具系列——YCSB

在上一篇文章中向大家介绍了sysbench开源性能基准测试工具,在这篇文章中将向大家介绍另一个流行的开源测试工具YCSB。

  1. YCS简介绍

     YCSB(Yahoo Cloud Serving Benchmark)是由Brian Cooper为数据库基准测试创建的一套工具。 YCSB支持各种类型的数据库,包括SQL数据库(比如:MySQL、PostgreSQL等)和NoSQL数据库(比如:Reids、HBase、MongoDB等)。 但是,我们应该知道YCSB基准测试的重点是针对Key-Value操作进行压力测试。因此,如果我们打算使用它测试与关系型数据库某些功能(例如连接)相关的操作,那么使用YCSB是不合适的。

    下图展示了YCSB的总体逻辑结构:

     NewSQL数据库压力测试工具系列——YCSB

     YCSB提供六种不同的基准测试方法,这些测试方法被定义为不同的工作负载。 所有工作负载都在相同的数据上完成。 因此,在执行YCSB工作负载之前,请确保已在数据库上创建模式并加载数据。在这里,我们选择其中的三种工作负载进行,其描述如下:

      (1) Workload A

           工作负载A的主要特点是执行大量更新操作,其中read/update操作比例为 50/50

      (2) Workload 

           工作负载B以执行大量的读操作为主,其中read/update的比例为95/5

      (3) Workload C

           工作负载C执行的操作都是读操作,即read/update的比例为100/0

    2. 安装

      (1) 环境

      本文示例假环境如下:

           操作系统: CentOS 7.4 ,需要安装jdk 1.8.x

          ycsb:0.15.0

          TiDB:2.0.x或2.1.x

          CockroachDB:2.0.x或2.1.x

     (2) 安装部署

      下载sysben软件包:

          https://github.com/brianfrankcooper/YCSB/releases/download/0.15.0/ycsb-0.15.0.tar.gz

      解压软件包:

          tar xvfz ycsb-0.15.0.tar.gz

      下载MySQL和PostgreSQL jdbc驱动,把jar包放入到ycsb加压后的<ycsb location>/jdbc�binding/lib目录下。

 

  3. 创建数据表

       使用mysql连接到TiDB或者使用pgsql连接到CockroachDB,然后执行如下命令:

CREATE DATABASE ycsb;
USE ycsb;
CREATE TABLE usertable (
YCSB_KEY VARCHAR(255) PRIMARY KEY,
FIELD0 VARCHAR(100), FIELD1 VARCHAR (100),
FIELD2 VARCHAR (100), FIELD3 VARCHAR (100),
FIELD4 VARCHAR (100), FIELD5 VARCHAR (100),
FIELD6 VARCHAR (100), FIELD7 VARCHAR (100),
FIELD8 VARCHAR (100), FIELD9 VARCHAR (100)
);

    4. 运行测试

     (1) 装载数据

--mysql/tidb

./bin/ycsb load jdbc -P workloads/workloada -p db.driver=com.mysql.jdbc.Driver \

  -p db.url=jdbc:mysql://192.168.1.171:4000/ycsb \

  -p db.user=root -p db.passwd= \

  -p recordcount=10000 -p operationcount=10000 -p threads=30

 

--postgresql/cockroachdb

./bin/ycsb.sh load jdbc -P workloads/workloada -p db.driver=org.postgresql.Driver \

  -p db.url=jdbc:postgresql://192.168.13.171:26257/ycsb?sslmode=disable \

  -p db.user=root -p db.passwd= \

  -p recordcount=10000 -p operationcount=10000 -p threads=30

 

    (2) 加压测试

--mysql/tidb

./bin/ycsb run jdbc -P workloads/workloada -p db.driver=com.mysql.jdbc.Driver \

  -p db.url=jdbc:mysql://192.168.1.171:4000/ycsb \

  -p db.user=root -p db.passwd= \

  -p recordcount=10000 -p operationcount=10000 -p threads=30

 

--postgresql/cockroachdb

./bin/ycsb.sh run jdbc -P workloads/workloada -p db.driver=org.postgresql.Driver \

  -p db.url=jdbc:postgresql://192.168.13.171:26257/ycsb?sslmode=disable \

  -p db.user=root -p db.passwd= \

  -p recordcount=10000 -p operationcount=10000 -p threads=30

 

参考:

     https://github.com/brianfrankcooper/YCSB