Skip to content

Latest commit

 

History

History
294 lines (242 loc) · 6.97 KB

ycsb.md

File metadata and controls

294 lines (242 loc) · 6.97 KB

YCSB工具使用说明

1. 属性

1.1 核心YCSB属性

所有工作量文件可以指定以下属性:

参数名 意义 默认值
workload 要使用的工作量类,如com.yahoo.ycsb.workloads.CoreWorkload
db 要使用的数据库类。可选地,这在命令行可以指定 com.yahoo.ycsb.BasicDB
exporter 要是用的测量结果的输出类 com.yahoo.ycsb.measurements.exporter.TextMeasurementsExporter
exportfile 用于替代stdout的输出文件路径 未定义/输出到stdout
threadcount YCSB客户端的线程数。可选地,这可以在命令行指定 1
measurementtype 支持的测量结果类型有直方图和时间序列 直方图

1.2 核心工作量包属性

和核心工作量构造器一起使用的属性文件可以指定以下属性及值 #####1.2.1 重要参数

参数名 意义 默认值 有效取值
recordcount 数据行数,装载进数据库的初始记录数 0
operationcount 要进行的操作数数量
fieldcount 每行的qualifier个数 10
fieldlength 100
requestdistribution 随机读的数据分布 uniform uniform、zipfian、latest
insertorder 写入顺序,ordered是顺序写,hashed是随机写 hashed ordered、hashed
readallfields 读取所有qualifier还是只读一个qualifier true true、false
readproportion 随机读占所有操作的比例 0.95
readproportion 更新(写入)占所有操作的比例 0.05
target 每秒总共操作的次数 unthrottled
thread 客户端线程数 1
1.2.2 非必需参数(对tera测试意义不大,用默认值即可)
参数名 意义 默认值 有效取值
insertproportion 插入(写入)占所有操作的比例 0
scanproportion scan占所有操作的比例,tera_mark不支持 0
readmodifywriteproportion readmodifywrite占所有操作的比例,tera不支持该操作 0
maxscanlength 每次scan需要读取的行数,tera不支持指定行数的scan 1000
scanlengthdistribution scan的行数选择策略 uniform
maxexecutiontime 最大执行时间,超过此时间会强行结束测试(单位为秒)
table 表名,tera_mark不支持 usertable

1.3 测量结果属性

每一个测量结果类型可以为如下属性形式:

类型 参数名 意义 默认值 有效取值
直方图 histogram.buckets 直方图输出的区间数 1000
时间序列 timeseries.granularity 时间序列输出的粒度 1000

2 运行时参数

即使工作负载类和参数文件定义了一个特定的工作负载,在运行基准测试时你还是想指定一些额外的设置。当你运行YCSB客户端时命令行提供了这些设置。这些设置包括:

  • -threads :客户端的线程。默认地,YCSB客户端使用一个工作者线程,但是额外的线程可以被指定。当需要增加对数据库的装载数量时这是经常使用的。
  • -target:每秒的目标操作数。默认地,YCSB客户端将试图尽可能地执行最多操作。例如,如果每个操作平均使用了100ms,客户端每个工作者线程每秒将执行10个操作。然而,你可以限制每秒的目标操作数。比如,为了生成一条延迟-吞吐量曲线,你可以指定不同的目标吞吐量,以测试每种吞吐量下的延迟。
  • -s:状态。对于一个运行时间长的工作负载,让客户端报告状态是有用的,这可以让你知道它并没有挂掉,并且给你某些对它的执行过程的想法。通过在命令行指定“-s”,客户端将每10秒输出状态到stderr。

3 用法

3.1 相关命令

  • load: 执行加载命令
  • run: 执行工作负载
  • shell: 交互式模式
#basic参数告诉客户端使用哑BasicDB层。你也可以在你的参数文件中使用“db”属性指定它(例如,“db=com.yahoo.ycsb.BasicDB”)
./bin/ycsb shell basic           
> help
Commands:
read key [field1 field2 ...]                  // Read a record
scan key recordcount [field1 field2 ...]     // Scan starting at key
insert key name1=value1 [name2=value2 ...]  // Insert a new record
update key name1=value1 [name2=value2 ...] // Update a record
delete key                                // Delete a record
table [tablename]                        // Get or [set] the name of the table
quit                                    // Quit

3.2 使用方法

使用时,先建表,再加载数据,最后执行相关事务。

3.2.1 建表

ycsb的生成的row都是“user”+19位数字的格式,如 user9105318085603802964。 因此,如果需要预分表,必须以“user”+N个数字作为分隔,建议选择2个数字。 例如要预分4个tablet,分隔字符串为:user25、user50、user75

create 'usertable','f1','f2','f3'
3.2.2 向tera中加载测试数据
bin/ycsb load tera -p workload=com.yahoo.ycsb.workloads.CoreWorkload \          //load参数告诉客户端执行工作负载的装载阶段。
                   -p recordcount=$(ROW_NUM) \                                  //-p参数被用于设置参数,-P参数用于装载属性文件。
                   -p fieldlength=$(QUALIFIER_NUM) \
                   -p fieldcount=$(VALUE_SIZE)
3.2.3 执行测试
bin/ycsb run tera -p workload=com.yahoo.ycsb.workloads.CoreWorkload \
                  -p recordcount=$(ROW_NUM) \
                  -p operationcount=$(ROW_NUM) \
                  -p requestdistribution=$(DIST) \
                  -p fieldlength=$(QUALIFIER_NUM) \
                  -p fieldcount=$(VALUE_SIZE) \
                  -p updateproportion=$(WRITE_PROP) \
                  -p readproportion=$(READ_PROP)