2014-08-27 17 views
5

'da anahtar/değer çiftlerinin toplam sayısını alma Bir RocksDB anahtar-değer deposunda depolanan anahtar/değer çiftlerinin sayısını verimli bir şekilde almak mümkün mü?RocksDB

wiki'u inceledim ve şu ana kadar bu konuyu tartışan hiçbir şey görmedim. Böyle bir operasyon mümkün mü?

cevap

6

Codewisely, bir rocksdb saklanan anahtarların tahmini sayısını elde etmek için db->GetProperty("rocksdb.estimate-num-keys", &num) kullanabilirsiniz.

Diğer bir seçenek, sonuçların dosya başına olmasına rağmen, --show_properties argümanı ile giriş sayısını almak için sst_dump aracını kullanmaktır.

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

Ve burada örnek çıktısı var: Örneğin, aşağıdaki komutu belirtilen rocksdb dizin altında her SST dosyasının özelliklerini gösterecektir

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

bazı kabuk komutları ile birleştirin, sen mümkün olacak toplam başvuru numarası almak için:

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}' 

Ve bu şu çıktıyı oluşturur:

total number of entries: 111507