Ich bin mit der Folge zu öffnen:In Kyoto Cabinet Database mit File Hash Database, wie kann Dateigröße erhöhen vermeiden?
db.open("db.kch#tune_defrag=10000", DB.OWRITER | DB.OCREATE)
Ich stelle und Elemente zu entfernen. Am Ende der Ausführung ist die Datenbank "leer", die Funktion count() gibt 0 zurück, weil ich alle Elemente entfernt habe. Warum nimmt die Dateigröße immer zu, wenn ich den Test wiederhole? Ist es möglich, etwas wie "Garbage Collector" auszuführen, um die entfernten Register zu bereinigen? Wenn ich den gleichen Test 100 mal ausführe, habe ich eine 500 MB große Datenbank, sogar ich habe nur 2 Datensätze.
Ich habe versucht, die "tune_defrag = 10000", aber ich denke, es hat nicht gut funktioniert.
Obs .: ein einziges Register ist weniger als 1K, ich verstehe nicht, warum die Register so viel Platz auf der Festplatte nehmen.
Vielen Dank für jede Hilfe
Sorry, ich glaube wirklich nicht. –
@Spamkids: Denke nicht darüber nach, welchen Teil? (versuche nur zu verstehen). – NotMe
Ich habe hier einige Tests gemacht und ich habe eine interessante Tatsache herausgefunden: Wenn ich den Prozess (mit kill oder kill -9) abbringe, wenn ich die Datenbank zurückhalte, ist sie sehr klein. Weil die Datenbank ihre "automatische Wiederherstellung" wie in der offiziellen Dokumentation erwähnt aktiviert hat. Ich habe eine interne Variable gesehen und die "reorganisiert" wird auf 1 gesetzt (wenn ich alles sanft schließe, war es immer 0). Also, ich denke, es ist möglich, etwas wie eine Reorganisation zu erzwingen. Ich weiß einfach nicht wie. Es ist kein unlösbares Problem, da bin ich mir fast sicher.Ich habe einfach nicht herausgefunden, wie ich es lösen soll. –