Abfragen mit Datenbank/SQL deutlich langsamer als direkte Abfragen der Datenbank
Trotz der Verwendung identischer Abfragen gibt es eine deutliche Leistungsdiskrepanz zwischen der Ausführung von a Fragen Sie direkt mit dem Dienstprogramm psql von Postgres und mit dem Datenbank-/SQL-Paket in einer Go-Anwendung ab. Diese Diskrepanz, bei der Abfragen, die in psql Millisekunden dauern, in Go mehrere zehn Millisekunden dauern, könnte auf bestimmte Faktoren in der Implementierung zurückzuführen sein.
Datenbank-/SQL-Verbindungen verstehen
Datenbank/SQL initialisiert einen Verbindungspool zum Herstellen von Verbindungen zur Datenbank, anstatt eine einzelne Verbindung zu erstellen. Die anfängliche Verzögerung bei der Abfrageausführung in Datenbank/SQL ist darauf zurückzuführen, dass der Pool mit null offenen Verbindungen beginnt. Die erste Abfrage muss eine Verbindung zum Server herstellen, bevor die SQL-Anweisung ausgeführt wird.
Bei nachfolgenden Abfragen kommt es ebenfalls zu Verzögerungen, da die Verbindung von der ersten Abfrage nicht wieder zum Pool freigegeben wurde. Dies bedeutet, dass jede nachfolgende Abfrage eine neue Verbindung erstellen muss, bevor die Abfrage ausgeführt wird.
Verbindungen wieder an den Pool freigeben
Um die Leistungsdiskrepanz zu beheben, stellen Sie sicher, dass Verbindungen vorhanden sind werden nach jeder Abfrage wieder an den Pool freigegeben. Das Freigeben einer Verbindung beinhaltet das Beibehalten des primären Rückgabewerts von db.Query und das anschließende Aufrufen der Close-Methode dafür.
Initialisieren des Pools mit einer offenen Verbindung
Um das zu mildern Anfängliche Verzögerung: Rufen Sie Ping sofort nach der Initialisierung im Verbindungspool auf. Dadurch wird sichergestellt, dass mindestens eine Verbindung im Pool verfügbar ist.
Vorbereitete Anweisungen
Einfache Abfragen ohne Argumente werden zwar wie erwartet ausgeführt, Abfragen mit Argumenten in Datenbank/SQL tatsächlich unter der Haube vorbereitete Anweisungen erstellen und ausführen. Vorbereitete Anweisungen bieten Leistungsvorteile, wenn dieselbe Abfrage mehrmals mit unterschiedlichen Argumenten ausgeführt wird.
Bekämpfung zusätzlicher Latenz
Neben Verbindungsmanagement und vorbereiteten Anweisungen kann es zusätzliche Latenzfaktoren geben Zu berücksichtigen:
Durch Berücksichtigung dieser Faktoren und Implementierung Durch die bereitgestellten Empfehlungen kann die Leistung von Abfragen mithilfe von Datenbank/SQL erheblich verbessert werden, sodass sie mit der direkten Abfrage der Datenbank vergleichbar sind.
Das obige ist der detaillierte Inhalt vonWarum ist meine Go-Datenbank-/SQL-Abfrage deutlich langsamer als eine direkte Postgres-PSQL-Abfrage?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!