von Markus Winand.

Konkrete Werte und der Query Plan Cache


PostgreSQL hat keinen globalen Cache für Ausführungspläne. Stattdessen gibt es einen optionalen Cache für prepared Statements. Das bedeutet, dass der Entwickler die Wahl hat, den Ausführungsplan für ein prepared Statement zu cachen, oder nicht. Der Cache wird auf jeden Fall verworfen, wenn das prepared Statement geschlossen wird.

Die folgenden Beispiele zeigen, wie man diese Funktionalität benutzt:

C

Die native C API stellt die Funktion PQexecParams zur Verfügung. Damit kann man schon während des PREPARE Schrittes konkrete Werte angeben, die bei der Erstellung des Ausführungsplanes berücksichtigt werden.

Java

Beim PostgreSQL JDBC Trieiber kann man server-seitiges PEPARE mit der proprietären Funktion setPrepareThreshold von PGStatement und PGConnection einstellen.

Beachte, dass der Wert standardmäßig fünf ist. Das bewirkt, dass die ersten vier Ausführungen die konkreten Werte benutzen, die weiteren Ausführungen dann nicht mehr. Das ganze geht wieder von vorne los, wenn ein neues PreparedStatement Objekt verwendet wird.

Warnung

Einige Ausführungsumgebungen (Application Server) verwenden einen PreparedStatement Cache (z.B., mittels prepared-statement-cache-size in der data-source Konfiguration). Dadurch verliert der Entwickler womöglich die Kontrolle über die PreparedStatement Instanzen, sodass das Limit jederzeit zuschlagen könnte.

Ruby

Ruby’s PGconn.exec erwartet die konkreten Werte als optionales Argument. Falls vorhanden, werden diese Werte beim Erstellen des Ausführungsplanes benutzt. Jeff Davis hat ein Beispiel dazu gemacht.

Du kannst nicht alles an einem Tag lernen. Abonniere den Newsletter via E-Mail, Bluesky oder RSS um sukzessive aufzuholen. Und sieh dir auch modern-sql.com an.

Über den Autor

Foto von Markus Winand

Markus Winand gibt auf modern-sql.com Einblick in SQL und zeigt, wie es von verschiedenen Systemen unterstützt wird. Zuvor machte er use-the-index-luke.com, was er noch immer wartet. Markus kann als Trainer, Sprecher und Berater auf winand.at engagiert werden.

Sein Buch kaufen

Titelbild von „SQL Performance Explained“: Eichhörnchen läuft durchs Grass

Die Essenz: SQL-Tuning auf 200 Seiten

Jetzt Kaufen
(Taschenbuch und/oder PDF)

Sein Training

Markus verwandelt veraltetes SQL-92-Wissen in solides und zeitgemäßes SQL-Know-how

Erfahren Sie mehr»

Neuigkeiten Abonnieren

Markus Winands MailinglistenMarkus Winands RSS-FeedMarkus Winand auf LinkedInMarkus Winand auf XINGMarkus Winand auf TwitterMarkus Winand auf Bluesky
Copyright 2010-2025 Markus Winand. Alle Rechte vorbehalten.
Impressum | Kontakt | KEINE GEWÄHR | Handelsmarken | Datenschutz und DSGVO