2012-04-07 5 views
15

Ich habe mehr als 100 Millionen Schlüssel-Wert-Paare (ein Schlüssel kann mehrere Werte haben). Ich benutze den BDB von Tokyo Cabinet (B + Tree DB), dessen Schlüssel ein 32-Bit-Byte-Array ist.Tokyo Cabinet - Memory Tuning

Ist es in Tokyo Cabinet möglich, festzulegen, wie viel Speicher (untere und obere Grenze) es verwenden kann? Eigentlich habe ich 8GB Speicher, aber es scheint, dass es keinen großen Speicher nutzen kann.

Ein weiterer Punkt ist, dass ich wissen will, dass, wie zu setzen

tokyoCabinet.tune() tokyoCabinet.optimize() tokyoCabinet.setxmsiz() tokyoCabinet.setcache() diese Parameter so I kann maximale Abstimmung für meinen Fall erhalten. Danke im Voraus. Jede Idee ist auch hilfreich für mich.

+2

Sie möchten Kyoto Cabinet überprüfen, die Fortsetzung zu Tokyo Cabinet. Die Macher empfehlen nachdrücklich, zum Kyoto-Kabinett zu wechseln - es sieht nicht so aus, als würde das Kabinett von Tokio beibehalten. –

+0

Von der Tokyo Cabinet Website, "BTW, kennen Sie Kyoto Kabinett? Eigentlich ist es mächtiger und bequemer Bibliothek als Tokyo Cabinet. In diesem Abstand der Zeit übertrifft Kyoto Kabinett Tokyo Cabinet in jeder Hinsicht. Ich empfehle Ihnen dringend zu verwenden Kyoto Kabinett. " –

Antwort

1

tokyoCabinet.setcache() - die Cache-Größe festgelegt, in der Regel die Hälfte oder mehr Dateigröße

tokyoCabinet.tune() ist - die Hash-Bucket-Datei und BTree Indexparameter einstellen, bevor offene

tokyoCabinet.optimize() - die neuen Parameter der Hash-Bucket-Datei und BTree-Index gesetzt, wenn die Datei bereits geöffnet wurde, wenn die Anzahl der Datensätze mehr als in der Einstellung (bnum) eingestellt erhöht wurde, können Sie durch optimieren(), beispielsweise.

tokyoCabinet.setxmsiz() eingestellt, die Größe des Speichers zusätzlichen kartiert, wie Mmap, in der Regel Dateigröße

100 Mio. Schlüssel-Wert-Paaren ist - bnum> 100M * 2 Wert ist 32 bit Byte-Array -> RECSIZE = 32bit = 8 byte -> APOW = 3 (= 2^3)

Wenn 1024 Elemente der Array: Sie RECSIZE, Set APOW = 13

lmemb gibt die Anzahl der Elemente in jeder Blattseite an. Wenn es nicht mehr als 0 ist, wird der Standardwert angegeben. Der Standardwert ist 128.

nmeb gibt die Anzahl der Elemente auf jeder Nicht-Blatt-Seite an. Wenn es nicht mehr als 0 ist, wird der Standardwert angegeben. Der Standardwert ist 256. fpow die maximale Anzahl von Elementen des freien Blocks Pool gibt an, um Leistung von 2.

The official documentation