2

db のベンチマークのために mongodb で YCSB ツールを実行していますが、ワークロード (workloada など) をロードしてトランザクション (ターゲット 1500 など) を実行すると、データベース全体を削除してロードしない限り、別のトランザクションを実行できないことに気付きました。再びデータベース。その理由は、データベースを削除してロードせずに別のトランザクションを実行すると、「重複キー エラー」というエラーが発生するためです。

最初のトランザクションが、2 番目のトランザクションも挿入しようとするいくつかのキーを入力したようです。これに対する回避策はありますか? それとも、私がしていることに何か問題がありますか。

これは、ロードに使用するコマンドです。

./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>
4

2 に答える 2

0

質問は古いですが、とにかく応答を追加します。

これが本来の動作です。ロード フェーズは、MongoDB にデータを挿入した後に実行するのが理想的です。その後、実行する予定のワークロードが続きます。

ワークロードを実行できるシーケンスの例については、YCSB wiki のこちらを参照してください。wiki のこのページは、テストを実行するために必要なすべてのリストを実行します。

ロードがベンチマークの対象である場合は、「ロード」操作の間および前に、コレクションとデータベースをドロップする必要があります。

于 2015-04-14T13:43:54.993 に答える
0

一度ロードすると、YCSB を何度でも実行できます。ただし、レコードが既にロードされているため、再度ロードするとエラーが発生します。したがって、MongoDB をロードしているディレクトリを削除する必要があります。

于 2014-10-09T08:25:12.460 に答える