Ich habe eine Multithread-Linux-C++ - Anwendung, die eine leistungsstarke Referenzdatensuche benötigt. Ich habe versucht, eine In-Memory-SQLite-Datenbank dafür zu verwenden, aber ich sehe keinen Weg, dies in meiner Multithread-Umgebung zu skalieren.Kann ich skalierbaren Multithread-Zugriff auf eine In-Memory-SQLite-Datenbank erreichen
Der standardmäßige Threading-Modus (serialisiert) scheint unter einer einzigen grobkörnigen Sperre zu leiden, auch wenn alle Transaktionen schreibgeschützt sind. Darüber hinaus glaube ich nicht, dass ich den Multi-Thread-Modus verwenden kann, da ich nicht mehrere Verbindungen zu einer einzigen In-Memory-Datenbank erstellen kann (weil jeder Aufruf von sqlite3_open (": memory:", & db) eine separate In-Memory-Datenbank erzeugt. Speicherdatenbank).
Also was ich wissen möchte ist: gibt es etwas, was ich in der Dokumentation verpasst habe und es ist möglich, mehrere Threads teilen Zugriff auf die gleiche In-Memory-Datenbank von meiner C++ - Anwendung.
Alternativ, gibt es eine Alternative zu SQLite, die ich in Betracht ziehen könnte?
Da die Seite, auf die Sie verweisen, die einzige in der Dokumentation zu In-Memory-Datenbanken ist, ist es keine Überraschung, dass ich sie bereits gelesen habe.Es sagt nichts darüber aus, dass ich nicht auf mehrere Threads per Design zugreifen kann und tatsächlich funktioniert meine Anwendung problemlos aus mehreren Threads - sie skaliert einfach nicht, wenn ich Threads hinzufüge. – Fergus
Willkommen zu Ihrer ersten Erwähnung! Es lohnt sich, dieses Glas Wein aufzuziehen, denke ich;) – mlvljr