Wie lang ist die Lebensdauer einer serverseitig vorbereiteten PostgreSQL-Anweisung?
Laut demPostgreSQL Dokumentation, eine vorbereitete Anweisung ist an eine Datenbanksitzung / -verbindung gebunden:
PREPARE erstellt eine vorbereitete Anweisung. Eine vorbereitete Anweisung ist ein serverseitiges Objekt, mit dem die Leistung optimiert werden kann. Wenn die PREPARE-Anweisung ausgeführt wird, wird die angegebene Anweisung analysiert, analysiert und neu geschrieben. Wenn anschließend ein EXECUTE-Befehl ausgegeben wird, wird die vorbereitete Anweisung geplant und ausgeführt.
Prepared-Anweisungen sind nur für die Dauer der aktuellen Datenbanksitzung gültig. Wenn die Sitzung endet, wird die vorbereitete Anweisung vergessen, sodass sie vor der erneuten Verwendung erneut erstellt werden muss.
Aber dann, Markus Winand (Autor von SQL Performance Explained) sagt, dass:
PostgreSQL verfügt nicht über einen gemeinsam genutzten Abfrageplan-Cache, sondern über einen optionalen Abfrageplan-Cache für vorbereitete Anweisungen. Dies bedeutet, dass der Entwickler die Wahl hat, eine vorbereitete Anweisung mit oder ohne zwischengespeicherten Abfrageplan zu verwenden. Beachten Sie jedoch, dass der Cache gelöscht wird, wenn die vorbereitete Anweisung geschlossen wird.
Welches ist wahr
Lebt die vorbereitete Anweisung, solange die Datenbankverbindung geöffnet ist, so kann dies bei Verwendung eines Verbindungspools so lange dauern, wie der Pool die physische Verbindung nicht explizit schließt oder die serverseitige vorbereitete Anweisung gelöscht wird, sobald die JDBC PreparedStatement ist geschlossen