Heyho,
ich habe folgendes Problem: Aus Performancegründen benutze ich für meine Functions IMMUTABLE, wobei STABLE eigentlich besser wäre (... aber das ist halt wesentlich langsamer).
Es würde reichen, wenn Postgres nur alle 1-2 Wochen die Tabelllen neu durchsucht. Gibt es da eine Möglichkeit das von Hand anzustoßen? Dann könnte ich das nämlich prima auf IMMUTABLE lassen.
Weiß da jemand etwas zu?
--
https://www.xing.com/profile/Andreas_Kretschmer7ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
Vielleicht kannst du uns erst mal konkret erklären, was du da machst.
Dann können wir dir bei deinem Problem helfen, und nicht bei den Workarounds.
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören
Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler
PostgreSQL Service & Support
Naja, ich habe mir eine Function geschrieben, die ein SELECT (mit 4-5 Joins) auf eine etwas größere Tabelle (momentan etwa 10 GB) macht. Diese Function hatte bisher immer das Attribute STABLE. Die Ausführungszeit der (selben) Query (bzw. der Aufruf der Function mit selben Parametern) belief sich immer auf 2000-5000ms (vermutlich je nach dem ob es schon im Cache lag oder nicht). Wenn ich das allerdings auf IMMUTABLE setze, dann ist zwar die erste Query langsam, aber bei der zweiten sind es dann nur noch 300-500ms. So wie ich das verstanden habe, optimiert Postgres bei IMMUTABLE gewisse Dinge aggressiver.
Es kommen zwar jeden Tag mindestens 100.000 Datensätze in die besagte Tabelle hinzu, aber die Aktualität der Daten spielt hierbei eine nicht sehr große Rolle. Deshalb würde es theoretisch reichen wenn ich der Datenbank alle 1-2 Wochen mal mitteile, dass sich die Daten doch geändert haben. Dann sind die Ergebnisse trotzdem aktuell genug und die Anfragen brauchen nicht zu lange.
Das kommt daher, das PostgreSQL das Ergebnis deiner Anfrage speichert, und bei folgenden Aufrufen die Funktion gar nicht mehr ausführt.
Wie lange braucht deine Anfrage selbst, und wieviele Ergebnisse lieferst du zurück?
Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören
Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler
PostgreSQL Service & Support
Links: Tobias Bauer - IT- und Funkdienstleistungen - Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen - Funkforum
Lesezeichen