YCSB的使用测试MySQL协议类数据库
Posted Syw
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了YCSB的使用测试MySQL协议类数据库相关的知识,希望对你有一定的参考价值。
一、工具介绍
YCSB 于 2010 年开源,YCSB是雅虎开源的NoSQL测试工具,通常用来对noSQL数据库进行性能
二、工具使用
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.0
2、修改配置
(1)进入ycsb-0.17.0/jdbc-binding/conf 修改db.properties
db.driver=com..jdbc.Driver # jdbc.fetchsize=20 db.url=jdbc:://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 , FIELD0 TEXT, FIELD1 TEXT, FIELD2 TEXT, FIELD3 TEXT, FIELD4 TEXT, FIELD5 TEXT, FIELD6 TEXT, FIELD7 TEXT, FIELD8 TEXT, FIELD9 TEXT );
#或者是如下的表结构
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命令
./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/-connector-java-5.1.46.jar -p recordcount=1000 -p threads=5 -p operationcount=1000 -p table=usertable
5、执行测试
加载好数据之后,即可执行工作负载
#将load改为run即可
./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/-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(近期写入的记录是热记录) |
四、测试结果的解读
[OVERALL], RunTime(ms), 8001 #运行总时间(毫秒) [OVERALL], Throughput(ops/sec), 124.9843769528809 #吞吐量,每秒操作数 [TOTAL_GCS_G1_Young_Generation], , 1 [TOTAL_GC_TIME_G1_Young_Generation], (ms), 152 [TOTAL_GC_TIME_%_G1_Young_Generation], (%), 1.8997625296837894 [TOTAL_GCS_G1_Old_Generation], , 0 [TOTAL_GC_TIME_G1_Old_Generation], (ms), 0 [TOTAL_GC_TIME_%_G1_Old_Generation], (%), 0.0 [TOTAL_GCs], , 1 #全局GC次数 [TOTAL_GC_TIME], (ms), 152 #全局GC时间 [TOTAL_GC_TIME_%], (%), 1.8997625296837894 #全局GC时间百分比 [READ], Operations, 954 #读总操作数 [READ], AverageLatency(us), 3428.7201257861634 #平均延迟(微秒) [READ], MinLatency(us), 1889 #最小延迟(微秒) [READ], MaxLatency(us), 163071 #最大延迟(微秒) [READ], 95thPercentileLatency(us), 5395 #95%的样本延迟低于该值 [READ], 99thPercentileLatency(us), 10007 #99%的样本延迟低于该值 [READ], Return=OK, 954 [CLEANUP], Operations, 1 [CLEANUP], AverageLatency(us), 9964.0 [CLEANUP], MinLatency(us), 9960 [CLEANUP], MaxLatency(us), 9967 [CLEANUP], 95thPercentileLatency(us), 9967 [CLEANUP], 99thPercentileLatency(us), 9967 [INSERT], Operations, 46 #写入总操作数 [INSERT], AverageLatency(us), 11757.478260869566 [INSERT], MinLatency(us), 6932 [INSERT], MaxLatency(us), 36159 [INSERT], 95thPercentileLatency(us), 19951 [INSERT], 99thPercentileLatency(us), 36159 [INSERT], Return=OK, 46
1.作者:Syw 2.出处:http://www.cnblogs.com/syw20170419/ 3.本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 4.如果文中有什么错误,欢迎指出。以免更多的人被误导。 |
以上是关于YCSB的使用测试MySQL协议类数据库的主要内容,如果未能解决你的问题,请参考以下文章
教程,使用YCSB测试MYSQL数据库,获取千万条测试后的数据
教程,使用YCSB测试MYSQL数据库,获取千万条测试后的数据
教程,使用YCSB测试MYSQL数据库,获取千万条测试后的数据
教程,使用YCSB测试MYSQL数据库,获取千万条测试后的数据