YCSB数据库性能测试工具


概述

Yahoo! Cloud Serving Benchmark (YCSB) 是一个Java语言实现的主要用于云端或者服务器端的数据库性能测试工具,其内部涵盖了常见的NoSQL数据库产品,如Cassandra、MongoDB、HBase、Redis等等。
下载地址:https://github.com/brianfrankcooper/YCSB/wiki
官方地址:https://github.com/brianfrankcooper/YCSB
这个框架具有很好的可扩展性,可以通过配置文件来指定需要进行什么样的workload的测试,比如读写比例多少,每条记录多大,每个字段多大,并发数多大,进行随机选择使用的分布(比如读一条数据的时候)等。

YCSB的架构图

其中,灰色部分用户可以通过编写Java代码的方式来自己定制。

提出目的:

NoSQL数据库不支持ACID型事务,各种不同类型的OLTP(on-Line Transaction Processing)应用程序服务与传统数据库服务工作负载有很大的区别,所以不能单靠传统的标准如(TCP-C)来衡量NoSQL数据库性能

优点
  • 配置方便,源码开源。可以设置任意读写比,线程数
  • 它包括几乎所有数据库的驱动程序,并且有较强的可扩展性
  • 这是行业标准。(相当稳定且有据可查)
缺点
  • 不能自动生成测试文档
  • 没有UI操作界面,需要一定门槛
参考文献

Benchmarking Cloud Serving Systems with YCSB


安装与使用

1. 下载工具包,直接解压就可以使用,无需编译和安装。

环境需求:java,YCSB是java应用程序,所以依赖于JRE
下载地址1:https://mirrors.huaweicloud.com/kunpeng/archive/kunpeng_solution/native/YCSB-0.15.0.zip
下载地址2:https://github.com/brianfrankcooper/ YCSB /releases/download/0.17.0/ycsb-0.17.0.tar.gz

2. 将下载的压缩包解压,并打开。

解压后

主要目录说明:

  • bin:目录下有个可执行的ycsb文件,是用户操作的命令行接口。ycsb主逻辑是:解析命令行、设置java环境,加载java-libs,封装成可以执行的java命令,并执行。
  • workloads:目录下有各种workload的模板,可以基于workload模板进行自定义修改。
    默认的6种测试场景如下:
    1)workloada:读写均衡型,50%/50%,Reads/Writes
    2)workloadb:读多写少型,95%/5%,Reads/Writes
    3)workloadc:只读型,100%,Reads
    4)workloadd:读最近写入记录型,95%/5%,Reads/insert
    5)workloade:扫描小区间型,95%/5%,scan/insert
    6)workloadf:读写入记录均衡型,50%/50%,Reads/insert
  • workload_template:参数列表模板。
3. 压测配置。

选择需要测试的测试场景,编辑对应的配置文件,以读写均衡型测试workloada为例:


参数配置
参数项 参数具体含义
recordcount YCSB load阶段加载的记录条数
operationcount YCSB run阶段执行的操作总数
workload workload实现类
readallfields 查询时是否读取记录的所有字段
readproportion 读操作的百分比
updateproportion 更新操作的百分比
scanproportion 插入操作的百分比
requestdistribution 请求分布模式,uniform, zipfian, latest三种分布模式
mongodb.url 待测试mongo实例的连接地址 (注:此为添加项)
mongodb.database 测试时使用的数据库名称,默认ycsb(注:此为添加项)
4. 加载数据

bin\ycsb load mongodb -threads 100 -P workloads\workloada
返回字段Return=OK,则表示数据导入成功。

命令参数说明:
ycsb [command] [database] [options]

  • command选项:
    load:载入测试数据。
    run:执行测试过程。
    shell:交互模式。
  • database选项:指定测试的数据库场景,例如mongodb, cassandra, memcached等。
  • options选项:
    -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. 执行测试

bin\ycsb run mongodb -threads 100 -P workloads\workloada
返回字段Return=OK,则表示测试完成,取“[OVERALL],Throughput”值作为测试指标。
测试结果分析
RunTime(ms): 数据加载所用时间,单位毫秒(ms)
Throughput(ops/sec): 吞吐量,即ops(每秒操作次数)
Operations: 操作的总次数
AverageLatency(us): 平均响应延时,单位是微秒(us)
MinLatency(us): 最小响应时间,单位是微秒(us)
MaxLatency(us): 最大响应时间,单位是微秒(us)
95thPercentileLatency(us): 95%的操作延时,单位是微秒(us)
99thPercentileLatency(us): 99%的操作延时,单位是微秒(us)
Return=OK: 成功返回数,这个值不符合测试要求,则证明测试失败.
[READ]开头的代表只读的操作记录,其他还有例如上面的[insert],[UPDATE]等,

其他可以理解的就是字面意思,不能理解也不需要太过关注.

和其他测试软件一样,这个只能说是基准值,并不是标准值,和真实环境不能全部模拟,所以测试的思维要结合别的测试软件的方法来做.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,753评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,668评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,090评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,010评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,054评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,806评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,484评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,380评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,873评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,021评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,158评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,838评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,499评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,044评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,159评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,449评论 3 374
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,136评论 2 356

推荐阅读更多精彩内容