YCSB的使用测试MySQL协议类数据库
一、工具介绍YCSB 于 2010 年开源,YCSB是雅虎开源的NoSQL测试工具,通常用来对noSQL数据库进行性能,注意此工具仅支持varchar和text类型,且列的长度可以增加,默认是10列,可以根据自己的需要增加列长。运行一个压力测试需要 6 步:
[*]配置需要测试的数据库
[*]选择合适的数据库接口层
[*]选择合适的 workload
[*]选择合适的运行时参数
[*]装载数据(loading phase) (ycsb主要就是这2步骤)
[*]运行测试(transaction phase)
二、工具使用
1、下载
curl -O --location https://github.com/brianfrankcooper/YCSB/releases/download/0.17.0/ycsb-0.17.0.tar.gz
tar xfvz ycsb-0.17.0.tar.gz
cd ycsb-0.17.02、修改配置
(1)进入ycsb-0.17.0/jdbc-binding/conf 修改db.properties
db.driver=com.mysql.jdbc.Driver
# jdbc.fetchsize=20
db.url=jdbc:mysql://192.168.30.128:33306/ycsb?useSSL=false&autoReconnect=true&characterEncoding=utf8
db.user=root
db.passwd=123456(2)进入ycsb-0.17.0/jdbc-binding/lib,下载mysql-connector-java-5.1.46.jar并放入lib目录下
3、创建测试的库与表
create database ycsb;
use ycsb;
#必须是这个表结构,负责插入数据将报错,可以将text改为varchar类型
CREATE TABLE usertable (
YCSB_KEY VARCHAR(255) PRIMARY KEY,
FIELD0 TEXT, FIELD1 TEXT,
FIELD2 TEXT, FIELD3 TEXT,
FIELD4 TEXT, FIELD5 TEXT,
FIELD6 TEXT, FIELD7 TEXT,
FIELD8 TEXT, FIELD9 TEXT
);<br><br>#或者是如下的表结构<br>CREATE TABLE usertable (
YCSB_KEY VARCHAR(255) PRIMARY KEY,
FIELD0 VARCHAR(255), FIELD1 VARCHAR(255),
FIELD2 VARCHAR(255), FIELD3 VARCHAR(255),
FIELD4 VARCHAR(255), FIELD5 VARCHAR(255),
FIELD6 VARCHAR(255), FIELD7 VARCHAR(255),
FIELD8 text, FIELD9 text
);
4、数据写入
cd ycsb-0.17.0 #进入此目录下,然后执行load命令<br>./bin/ycsb load jdbc -s -P workloads/workloadd -P /syw_test/ycsb-0.17.0/jdbc-binding/conf/db.properties -cp /syw_test/ycsb-0.17.0/jdbc-binding/lib/mysql-connector-java-5.1.46.jar -p recordcount=1000 -p threads=5 -p operationcount=1000 -p table=usertableoptions选项:
-P file :指定workload文件,相对路径或者绝对路径。
-cp path :指定额外的Java classpath。
-jvm-args args :指定额外的JVM参数。
-p key=value :设置ycsb配置项,会覆盖workload文件的配置项。
-s :运行时的中间状态打印到stderr中。
-target n :表示1s中总共的操作次数。
-threads n :设置ycsb client的并发测试线程数,默认是1,单线程。5、执行测试
加载好数据之后,即可执行工作负载
#将load改为run即可<br>./bin/ycsb run jdbc -s -P workloads/workloadd -P /syw_test/ycsb-0.17.0/jdbc-binding/conf/db.properties -cp /syw_test/ycsb-0.17.0/jdbc-binding/lib/mysql-connector-java-5.1.46.jar -p recordcount=1000 -p threads=5 -p operationcount=1000 -p table=usertable
三、YCSB测试参数解析
(1)workloads目录里面下包含自带了6种压力测试场景:
workloada:读写均衡型,50%/50%,Reads/Writes
workloadb:读多写少型,95%/5%,Reads/Writes
workloadc:只读型,100%,Reads
workloadd:读最近写入记录型,95%/5%,Reads/insert
workloade:扫描小区间型,95%/5%,scan/insert
workloadf:读写入记录均衡型,50%/50%,Reads/insert(2)workload参数介绍
参数
含义
recordcount=1000
YCSB load(加载元数据)命令的参数,默认值1000表示默认加载的记录条数,可以在命令行显示修改该值。
operationcount=1000
YCSB run(运行压力测试)命令的参数,默认值1000表示默认选取数据库中的1000条数据进行压力测试。对于workloada这种测试场景,就意味着读数据在500左右,写数据也在500左右。
workload=com.yahoo.ycsb.workloads.CoreWorkload
指定了workload的实现类为 com.yahoo.ycsb.workloads.CoreWorkload
readallfields=true
表示查询时是否读取记录的所有字段
readproportion=0.5
表示读操作的比例,该场景为0.5
updateproportion=0.5
表示更新操作的比例,该场景为0.5
scanproportion=0
表示扫描操作的比例
insertproportion=0
表示插入操作的比例
requestdistribution=zipfian
表示请求的分布模式,YCSB提供uniform, zipfian, latest三种分布模式,
Uniform(等概率随机选择记录)、Zipfian(随机选择记录,存在热纪录)和Latest(近期写入的记录是热记录)
四、测试结果的解读
, RunTime(ms), 8001 #运行总时间(毫秒) 【测试指标】
, Throughput(ops/sec), 124.9843769528809 #吞吐量,每秒操作数 【测试指标】
, Count, 1
, Time(ms), 152
, Time(%), 1.8997625296837894
, Count, 0
, Time(ms), 0
, Time(%), 0.0
, Count, 1 #全局GC次数
, Time(ms), 152 #全局GC时间
, Time(%), 1.8997625296837894 #全局GC时间百分比
, Operations, 954 #读总操作数
, AverageLatency(us), 3428.7201257861634 #平均延迟(微秒)
, MinLatency(us), 1889 #最小延迟(微秒)
, MaxLatency(us), 163071 #最大延迟(微秒)
, 95thPercentileLatency(us), 5395 #95%的样本延迟低于该值 【测试指标】
, 99thPercentileLatency(us), 10007 #99%的样本延迟低于该值
, Return=OK, 954
, Operations, 1
, AverageLatency(us), 9964.0
, MinLatency(us), 9960
, MaxLatency(us), 9967
, 95thPercentileLatency(us), 9967
, 99thPercentileLatency(us), 9967
, Operations, 46 #写入总操作数
, AverageLatency(us), 11757.478260869566
, MinLatency(us), 6932
, MaxLatency(us), 36159
, 95thPercentileLatency(us), 19951
, 99thPercentileLatency(us), 36159
, Return=OK, 46 五、测试指标
运行时间、吞吐量、时延
来源:https://www.cnblogs.com/syw20170419/p/17251456.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页:
[1]