2016-07-05 4 views
0

Java Berkeley DB wird in meinem System verwendet, um persistente Daten zu speichern.Hat Java Berkeley DB eine Obergrenze für das gleichzeitige Lesen?

Da ich eine große Menge von Daten geladen habe, versuche ich das mit einer Anzahl von Threads zu tun. Wenn die Anzahl der Threads niedrig ist, z. B. 10, funktioniert es gut. Wenn es jedoch auf einen höheren Wert, z. B. 30, gesetzt wird, bleiben die Lesevorgänge hängen. Es sieht so aus, als hätte die Java Berkeley DB eine Obergrenze für das Lesen von Gleichzeitigkeiten? Habe ich recht? Wie würde ich das Limit aktualisieren?

Antwort

0

Haben Sie gesagt ... "zu sein geladen?"

Uh huh, dachte du hast!

Daher sind die Threads, die Sie sprechen, nicht "lesen" Threads: Sie sind "Schreiben" Threads!

Und, raten Sie mal: Sie sind im Wettbewerb miteinander, und, raten Sie mal, sie verlieren!

Leider war Ihr "Versuch", Dinge durch die Verwendung von Threads zu beschleunigen (IMHO ...) "aufrichtig, aber fehlgeleitet." Letztlich ist eine Berkely-DB "eine einzige Datenstruktur auf der Festplatte", und so gibt es Möglichkeiten, den Prozess durch die Verwendung von Multithreading zu beschleunigen.

Verschiedene andere Strategien könnten jedoch funktionieren. Zum Beispiel könnten Sie feststellen, dass die Datensätze, die durch einen geeigneten externen Befehl eingefügt werden sollen, “ nützlicherweise (viel?) schneller wird. ” Genug Geschwindigkeitsdifferenz, also mehr als (!) Nachholzeit. (Es gibt jedoch nur eine Möglichkeit herauszufinden, ob dies in Ihre Situation gilt: "Benchmarking, Ihre tatsächlichen Daten verwenden, Ihre eigentliche Sortierbefehl, und so weiter.")

Verwandte Themen