2 Stimmen

Gibt es eine lokale DB, die Multithreading unterstützt?

Ich habe Sqlite ausprobiert, Durch die Verwendung von Multi-Thread kann nur ein Thread die Datenbank zur gleichen Zeit aktualisieren. Ich brauche Multi-Thread-Aktualisierung der Datenbank zur gleichen Zeit. Gibt es sind alle DB kann die Arbeit tun?

ps: Ich verwende Delphi6.


Ich habe herausgefunden, dass Sqlite Multithreading unterstützen kann,

Aber in meinem Test von asgsqlite, wenn ein Thread einfügen, werden andere nicht einfügen.

Ich bin noch in der Testphase.

1voto

MarkR Punkte 60862

Warum brauchen Sie mehrere Threads, um sie gleichzeitig zu aktualisieren? Ich bin mir sicher, dass Sqlite dafür sorgt, dass die Aktualisierungen korrekt durchgeführt werden, auch wenn das bedeutet, dass ein Thread auf den anderen wartet, bis er fertig ist; das ist für die Anwendung transparent.

Mehrere Threads, die gleichzeitig aktualisieren, würden aller Wahrscheinlichkeit nach nicht zur Leistungssteigerung beitragen. Das heißt, es könnte so aussehen, als würden mehrere Threads gleichzeitig aktualisieren, aber in Wirklichkeit würde das Ergebnis sein, dass die Aktualisierungen langsamer durchgeführt werden, als wenn sie es nicht täten (aufgrund der Tatsache, dass sie viele Seitensperren usw. halten müssen, um Probleme zu vermeiden).

1voto

mj2008 Punkte 6597

DBISAM von ElevateSoft funktioniert sehr gut im Multithreading-Modus und verfügt über eine automatische Sitzungsbenennung, um dies zu erleichtern. Folgen Sie unbedingt der Seite in der Hilfe, wie Sie alles sicher machen, und schon ist die Arbeit getan.

0voto

Jose Punkte 1536

Ich führe gerade Leistungstests mit einem Multithreading-Java-Prozess auf Sybase ASE durch. Der Prozess analysiert eine 1 GB große Datei und führt Einfügungen in eine Tabelle durch.

Zuerst hatte ich Angst, denn viele der erfahrenen Programmierer warnten mich vor "Tabellensperren" und davor, wie gefährlich der gleichzeitige Zugriff auf die Datenbank ist. Aber ich machte weiter und testete (weil ich es selbst herausfinden wollte).

Ich habe einen Single-Thread-Prozess erstellt und mit einem Prozess mit 4 Threads verglichen. Die Gesamtausführungszeit wurde nur um 20 % reduziert. Ich habe den Prozess mit verschiedenen Thread-Zahlen und Batch-Insert-Größen erneut versucht. Das Maximum, das ich herausholen konnte, waren 20 %.

Wir werden bald auf Oracle umsteigen, daher werde ich Ihnen mitteilen, wie Oracle mit gleichzeitigen Einfügungen umgeht, wenn dies geschieht.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X