PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie speichert PostgreSQL Anweisungen und Daten?

Im Allgemeinen werden nur die Inhalte von Tabellen- und Indexdateien im gemeinsam genutzten Pufferbereich zwischengespeichert.

Abfragepläne werden unter bestimmten Umständen zwischengespeichert. Der beste Weg, dies sicherzustellen, besteht darin, die Abfrage einmal VORBEREITEN und dann jedes Mal AUSFÜHREN.

Die Ergebnisse einer Abfrage werden nicht automatisch zwischengespeichert. Wenn Sie dieselbe Abfrage erneut ausführen – selbst wenn sie Buchstabe für Buchstabe identisch ist und keine Aktualisierungen an der Datenbank vorgenommen wurden – wird dennoch der gesamte Plan ausgeführt. Es wird natürlich alle Tabellen-/Indexdaten verwenden, die sich bereits im gemeinsam genutzten Puffer-Cache befinden; es müssen also nicht unbedingt alle Daten erneut von der Festplatte gelesen werden.

Update zum Plan-Caching

Das Plan-Caching erfolgt im Allgemeinen pro Sitzung. Das bedeutet, dass nur die Verbindung, die den Plan erstellt, die zwischengespeicherte Version verwenden kann. Andere Verbindungen müssen ihre eigenen zwischengespeicherten Versionen herstellen und verwenden. Dies ist nicht wirklich ein Leistungsproblem, da die Einsparungen, die Sie durch die Wiederverwendung eines Plans erzielen, im Vergleich zu den Verbindungskosten sowieso fast immer winzig sind. (Es sei denn, Ihre Fragen sind wirklich kompliziert.)

Das tut es Cache, wenn Sie PREPARE verwenden:http://www.postgresql.org /docs/current/static/sql-prepare.html

Das tut es Cache, wenn sich die Abfrage in einer PL/plSQL-Funktion befindet:http://www.postgresql.org/docs/current/static/plpgsql-implementation.html#PLPGSQL-PLAN-CACHING

Es nicht in psql eingegebene Ad-hoc-Abfragen zwischenspeichern.

Hoffentlich kann jemand anderes auf andere Fälle von Abfrageplan-Caching eingehen.