RocksDB キーと値のストアに格納されているキーと値のペアの数を効率的に取得することは可能ですか?
私はwikiを調べましたが、これまでこのトピックについて議論しているものは何も見当たりませんでした. そのような操作は可能ですか?
RocksDB キーと値のストアに格納されているキーと値のペアの数を効率的に取得することは可能ですか?
私はwikiを調べましたが、これまでこのトピックについて議論しているものは何も見当たりませんでした. そのような操作は可能ですか?
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
カウントを正確に取得する方法はありません。しかし、最近リリースされた rocksdb 3.4 では、キーの推定数を取得する方法が公開されているので、試すことができます。