2014-08-27 17 views

Antwort

2

Es gibt keine Möglichkeit, die Zählung genau zu erhalten. Aber in rocksdb 3.4, die kürzlich veröffentlicht wurde, gibt es einen Weg, um eine Schätzung Anzahl für Schlüssel zu erhalten, können Sie es versuchen.

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

6

Codewisely, könnten Sie db->GetProperty("rocksdb.estimate-num-keys", &num) verwenden, um die geschätzte Anzahl von Tasten in einem rocksdb gespeichert zu erhalten.

Eine weitere Option ist das sst_dump Werkzeug mit --show_properties Argumente zu verwenden, um die Anzahl der Einträge zu bekommen, obwohl das Ergebnis pro Datei-Basis sein würde. Beispielsweise liefert der folgende Befehl die Eigenschaften jeder SST-Datei unter dem angegebenen rocksdb Verzeichnis:

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

Und hier ist das Beispiel für die Ausgabe:

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

mit einigen Shell-Befehlen kombinieren, können Sie

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

Und dies wird erzeugt die folgende Ausgabe:: die Gesamtzahl der Einträge zu bekommen

total number of entries: 111507