在mongodb上运行ycsb工作负载

时间:2013-08-12 01:17:42

标签: mongodb ycsb

我正在mongodb上运行YCSB工具来对db进行基准测试,我注意到一旦我加载了一个工作负载(例如workloada)并运行一个事务(例如目标1500),我就无法在不丢弃整个事务的情况下运行另一个事务数据库并再次加载数据库。原因是,如果我在没有删除和加载数据库的情况下运行另一个事务,我会得到错误“重复键错误”。

看起来第一个事务输入了第二个事务也尝试插入的一些键。这有解决方法吗?或者我正在做的事情有问题。

这是我用来加载的命令:

./bin/ycsb load mongodb -P workloads/workloada
  -p mongodb.url=<ip_address>:27020
  -p mongodb.maxconnections=150 -s
  -p mongodb.writeConcern=normal
  -target 3500 -threads 200  > <output-file>

这是我用于交易阶段的命令

./bin/ycsb load mongodb
  -P workloads/workloada
  -p mongodb.url=<IP_address>:27020
  -p mongodb.maxconnections=100 -s
  -p mongodb.writeConcern=normal
  -target 1500 -threads 100  > <output_file>

2 个答案:

答案 0 :(得分:0)

加载一次后,您可以根据需要多次运行YCSB。 但是,再次加载会在记录已加载时给出错误。因此,您必须删除加载MongoDB的目录。

答案 1 :(得分:0)

这个问题很老,但无论如何都要添加回复。

这就是它的表现方式:一旦将数据插入MongoDB,理想情况下就会运行加载阶段,然后是您打算运行的任何工作负载。

在YCSB wiki中查看here,了解可以运行工作负载的序列示例。 wiki中的This页面会运行运行测试所需的所有内容列表。

如果load是您打算进行基准测试的,那么您应该在“加载”操作之间和之前删除集合和数据库。