获取RocksDB中键值对的总数

时间:2014-08-27 23:58:09

标签: database-administration rocksdb

是否可以有效地获取存储在RocksDB键值存储中的键值对的数量?

我查看了wiki,到目前为止还没有看到任何讨论此主题的内容。这种操作甚至可能吗?

2 个答案:

答案 0 :(得分:7)

按照代码方式,您可以使用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
...

结合一些shell命令,您将能够获得总条目数:

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

答案 1 :(得分:2)

没有办法准确地计算。但是在最近发布的rocksdb 3.4中,它揭示了一种获取密钥估计计数的方法,你可以尝试一下。

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