9

RocksDB キーと値のストアに格納されているキーと値のペアの数を効率的に取得することは可能ですか?

私はwikiを調べましたが、これまでこのトピックについて議論しているものは何も見当たりませんでした. そのような操作は可能ですか?

4

2 に答える 2

12

db->GetProperty("rocksdb.estimate-num-keys", &num)コード的には、rocksdb に格納されているキーの推定数を取得するために使用できます。

別のオプションは、引数を指定してsst_dumpツールを使用して--show_propertiesエントリ数を取得することですが、結果はファイル単位になります。たとえば、次のコマンドは、指定した rocksdb ディレクトリの下にある各 SST ファイルのプロパティを表示します。

sst_dump --file=/tmp/rocksdbtest-691931916/dbbench --show_properties --command=none

出力例は次のとおりです。

Process /tmp/rocksdbtest-691931916/dbbench/000005.sst
Sst file format: block-based
Table Properties:
------------------------------
  # data blocks: 845
  # entries: 27857
  raw key size: 668568
  raw average key size: 24.000000
  raw value size: 2785700
  raw average value size: 100.000000
  data block size: 3381885
  index block size: 28473
  filter block size: 0
  (estimated) table size: 3410358
  filter policy name: N/A
  # deleted keys: 0
Process /tmp/rocksdbtest-691931916/dbbench/000008.sst
Sst file format: block-based
Table Properties:
------------------------------
  # data blocks: 845
  # entries: 27880
  raw key size: 669120
...

いくつかのシェル コマンドと組み合わせると、エントリの総数を取得できます。

sst_dump --file=/tmp/rocksdbtest-691931916/dbbench --show_properties --command=none | grep entries | cut -c 14- | awk '{x+=$0}END{print "total number of entries: " x}'

これにより、次の出力が生成されます。

total number of entries: 111507
于 2014-09-10T22:08:24.113 に答える
2

カウントを正確に取得する方法はありません。しかし、最近リリースされた rocksdb 3.4 では、キーの推定数を取得する方法が公開されているので、試すことができます。

https://github.com/facebook/rocksdb/releases

于 2014-08-31T11:06:58.237 に答える