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.

7voto

Yuval Adam Punkte 155168

SQLite kann in Multithreading-Umgebungen verwendet werden.

Überprüfen Sie dieser Link .

4voto

mghie Punkte 31618

Feuervogel kann in einer eingebetteten Version verwendet werden, aber es ist kein Problem, die Standardinstallation (Server) auch lokal zu verwenden. Sehr klein, einfach zu implementieren, gleichzeitiger Zugriff. Funktioniert gut mit Delphi, Sie sollten es als Option in Betracht ziehen.

Siehe auch die StackOverflow-Frage "Welche eingebettete Datenbank soll in einer Delphi-Anwendung verwendet werden?"

2voto

SeanX Punkte 1843

Sqlite sperrt beim Aktualisieren die gesamte Datenbank (es sei denn, dies hat sich seit meiner letzten Verwendung geändert). Ein zweiter Thread kann die Datenbank nicht gleichzeitig aktualisieren (auch nicht mit völlig getrennten Tabellen). Es gibt jedoch einen Timeout-Parameter, der dem zweiten Thread sagt, dass er es x Millisekunden lang erneut versuchen soll, bevor er fehlschlägt. Ich glaube, ASqlite stellt diesen Parameter in der Datenbankkomponente zur Verfügung (ich glaube, ich habe diesen Teil des Codes tatsächlich geschrieben, alle 3 Zeilen, aber das ist schon ein paar Jahre her).

Wenn Sie die Zeitüberschreitung auf einen größeren Wert als 0 einstellen, können mehrere Threads die Datenbank aktualisieren. Dies kann jedoch Auswirkungen auf die Leistung haben.

1voto

Javier Punkte 58737

Seit Version 3.3.1 sind die Anforderungen an das Threading von SQLite sehr entspannt . in den meisten Fällen bedeutet dies, dass sie funktioniert einfach Wenn Sie wirklich mehr Gleichzeitigkeit als das benötigen, ist es vielleicht besser, einen DB-Server zu verwenden.

1voto

John Saunders Punkte 159011

SQL Server 2008 Express unterstützt Gleichzeitigkeit sowie die meisten anderen Features von SQL Server. Und es ist kostenlos.

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