Wir haben eine PostgreSQL-Datenbank, um die Daten unserer C++ - Anwendung zu speichern, und wir verwenden libpqxx, um eine Verbindung herzustellen.Effizienz beim Öffnen von PostgreSQL-Datenbankverbindungen
Derzeit öffnen wir eine neue für jede Transaktion, die wir ausführen möchten. Bei der Implementierung erwarten wir, dass wir höchstwahrscheinlich ungefähr vier oder fünf Dutzend Transaktionen pro Minute ausführen, und unsere Anwendung läuft 24x7x365.
Nach dem PostgreSQL architectural fundamentals,
... [der PostgreSQL Serverprozess] beginnt ("Gabeln") ein neuer Prozess für jede Verbindung.
Das klingt für mich wie unser Verfahren zur Herstellung eines neuen pqxx::connection
für jede Transaktion zu öffnen ist wirklich ineffizient sind, da wir indirekt ein paar Dutzend neue Prozesse jede Minute Laichen. Ist das etwas, worüber wir uns wirklich Sorgen machen sollten?
Ich sehe here on the PostgreSQL wiki, dass PostgreSQL selbst nicht einen Pool von Client-Verbindungsprozessen verwaltet, so dass es scheint, dass wir uns in der Tat darum kümmern müssen. Wenn ja, gibt es einen "richtigen" Weg, Objekte auf unbestimmte Zeit zu erhalten, so dass ein neuer Prozess nicht jedes Mal verzweigt wird, wenn ich mich mit der Datenbank verbinden muss? Denken Sie daran, dass meine Anwendung den ganzen Tag und jeden Tag ausgeführt werden muss. Daher ist es inakzeptabel, dass meine TCP-Verbindungen nach einer langen Zeit abfallen.
Vielen Dank für Ihre Antwort. Ich schätze den Input. Ich werde diese Ineffizienz in unserem Code als einen Ort für zukünftige Verbesserungen dokumentieren :) – villapx